应如何正确地描述下面的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>



                 
阅读 1.8k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题