应如何正确地描述下面的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.session.selectList() 里面可以传入一个标识就行,不用传全类名.
2.Mapper文件中的<select><select> 中可以设置传入参数类型.
3.UserBasicMap只是规定封装数据的对象属性.