mybatis 注解开发 多表查询
1.结果集映射
点击查看代码
//05_1 多表查询 结果集映射 id 为true 代表是主键
@Select("select userid as id ,username as name,usersex as sex from users where userid = #{userid}")
@Results(id = "usersMapper", value = {
@Result(id = true, property = "userid", column = "id"),
@Result(property = "username", column = "name"),
@Result(property = "usersex", column = "sex")
})
Users selectUsersByIdMapper(Users users);
在 Mybatis 的注解开发中对于多表查询只支持 N+1 次查询,不支持连接查询。
2.一对一
2.1 创建pojo对象Roles
2.2 创建RolesMapper接口
2.2.1 创建方法
点击查看代码
//01 查询
@Select("select * from Roles where roleid = #{userid}")
Roles selectRolesByUserId(int userid);
点击查看代码
//05_2 多表查询 一对一
@Select("select * from users where userid=#{userid}")
@Results(id = "usersAndRolesMapper", value = {
@Result(id = true, property = "userid", column = "userid"),
@Result(property = "username", column = "username"),
@Result(property = "usersex", column = "usersex"),
@Result(property = "roles", column = "userid", one = @One(select = "com.bjsxt.mapper.RolesMapper.selectRolesByUserId",fetchType = FetchType.LAZY))
})
Users selectUsersAndRolesByUserId(int userid);
点击查看代码
<!-- 开启延迟加载 N+1 -->
<settings>
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>
3.一对多
3.1创建 orders 对象
3.2创建order 接口
3.2.1 创建方法
点击查看代码
//01
@Select("select * from orders where user_id=#{userid}")
List<Orders> selectOrdersByUserId(int userid);
点击查看代码
//05_3 多表查询 一对多
@Select("select * from users where userid=#{userid}")
@Results(id = "usersAndOrdersMapper", value = {
@Result(id = true, property = "userid", column = "userid"),
@Result(property = "username", column = "username"),
@Result(property = "usersex", column = "usersex"),
@Result(property = "orders", column = "userid", many = @Many(select = "com.bjsxt.mapper.OrdersMapper.selectOrdersByUserId",fetchType = FetchType.LAZY))
})
Users selectUsersAndOrdersByUserId(int userid);

浙公网安备 33010602011771号