之前已经完成了MyBatis的增删改查,现在我们来处理一个问题,如果再JavaBean中有一个映射属性是个复杂类型比如在User用户表中,有一个Role角色属性。我们该如何处理,为了解决这个问题,我们做如下练习:
先准备一个数据表
完成改表映射的JavaBean的创建,完成对应的get和set方法
然后我们修改User类,增加角色属性(Role role),并增加相应的get和set方法。这样我们就在User对象中嵌套了一个复杂的数据类型对象
接下来,我们在userDao接口里增加根据角色id获取用户列表的方法
继续修改userMapper.xml中的内容,增加对应的方法,该查询语句外部引入的resultMap类型为User,我们使用association来实现结果映射
我们编写测试方法
我们准备编号为2的数据
然后我们执行测试方法
那么我们可以认为userRoleResult联合一个association的结果映射来加载一个User实例,那么association的role结果映射也可以复用
我们修改UserMapper.xml
我们重新来运行我们的测试代码,查看结果
结果是一样的
之前已经完成了MyBatis的一对一关联属性,现在我们练习一个collection元素,相对于association元素,它的作用是处理一个集合列表,我们做如下练习:
先准备一个数据表
完成改表映射的JavaBean的创建,完成对应的get和set方法
然后我们修改User类,增加地址列表属性(List
addressList),并增加相应的get和set方法。这样我们就在User对象中嵌套了一个复杂的数据类型对象
接下来,我们在userDao接口里增加根据角色id获取地址列表的方法
继续修改userMapper.xml中的内容,增加对应的方法,该查询语句外部引入的resultMap类型为User,我们使用collection来实现结果映射
我们编写测试方法
我们准备编号为1的数据
然后我们执行测试方法