猿问

应如何正确地描述下面的MyBatis语句的执行过程?

应如何正确地描述下面的MyBatis语句的执行过程?
    我的理解如下,但感觉很拗口,似懂非懂的感觉:
        由session.selectList("com.kgc.mybatis.pojo.UserMapper.getUsers2")可知,
        将去执行mapper文件中id为getUsers2的select语句,
        而在id为getUsers2的select语句中,由于resultMap="UserBasicMap",
        又会去id="UserBasicMap"的resultMap中找,...
        
        User类:
            public class User {
                private String uid;
                private String uname;
                private List<Book> books;
                //setter,getter方法
            } 
            
       Book类:
           public class Book {
               private String bid;
               private String bname;      
               //setter,getter方法
           }


测试类:
    @Test
    public void getUsers2Test(){
        List<User> userList = session.selectList("com.kgc.mybatis.pojo.UserMapper.getUsers2");
        for(User user : userList){
            System.out.println(user);
        }
    }           
           
Mapper文件:
    <resultMap type="com.kgc.mybatis.pojo.User" id="UserBasicMap">
        <id property="uid" column="uid"/>
        <result property="uname" column="uname" />
        
        <collection property="books" ofType="com.kgc.mybatis.pojo.Book">
            <id property="bid" column="bid" /> 
            <result property="bname" column="bname" />
        </collection>
    </resultMap> 
    
    <select id="getUsers2" resultMap="UserBasicMap"> 
        select * from t_user t1 left join t_book t2 on t1.uid = t2.userid
    </select>



                 
喵喔喔
浏览 561回答 1
1回答

心有法竹

1.session.selectList() 里面可以传入一个标识就行,不用传全类名.2.Mapper文件中的<select><select> 中可以设置传入参数类型. 3.UserBasicMap只是规定封装数据的对象属性.
随时随地看视频慕课网APP

相关分类

Java
我要回答