mybatis中@Many
mybatis many
2023-06-13 09:15:37 时间
吃饭先喝汤,不用请药方——佚名
之前写了mybatis中@One
今天写个@Many
的
首先还是代码:
package com.ruben.mapper;
import com.ruben.pojo.po.UserInfo;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.cursor.Cursor;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user_info")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "name", property = "name"),
@Result(column = "age", property = "age"),
@Result(column = "email", property = "email"),
@Result(property = "userRoles", javaType = List.class, column = "userRole.userId = id",
many = @Many(select = "com.ruben.mapper.UserRoleMapper.selectListCursor"))
})
List<UserInfo> selectList(RowBounds rowBounds);
}
这里的UserRoleMapper.selectListCursor
还是没动,感觉这里不应该是userRole.userId
,直接使用userId
、roleId
会更好
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruben.mapper.UserRoleMapper">
<resultMap id="userRole" type="com.ruben.pojo.po.UserRole">
<result column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="role_id" property="roleId"/>
<association property="role"
column="id = role_id"
javaType="com.ruben.pojo.po.RoleInfo"
select="com.ruben.mapper.RoleMapper.getById"
fetchType="lazy"/>
</resultMap>
<select id="selectListCursor" resultMap="userRole">
select *
from user_role
<where>
<if test="userRole.userId != null">
AND user_id = #{userRole.userId}
</if>
<if test="userRole.roleId != null">
AND role_id = #{userRole.roleId}
</if>
</where>
</select>
</mapper>
然后结合之前的代码,这里写个单元测试:
@Test
void testMany(@Autowired UserMapper userMapper) {
List<UserInfo> users = userMapper.selectList(new RowBounds(0, 5));
Assertions.assertEquals("admin", users.get(0).getUserRoles().get(0).getRole().getRoleName());
Assertions.assertEquals("user", users.get(0).getUserRoles().get(1).getRole().getRoleName());
}
运行结果:
相关文章
- Data Access 之 MyBatis Plus(二)- Wrapper 条件构造器
- 看了我的mybatis-plus用法,同事也开始悄悄模仿了
- MyBatis-多表查询(一对一)
- Mybatis拦截器
- MyBatis——【入门级】简单了解myBatis
- Mybatis 模糊查询
- mybatis if标签判断boolean等于true或者flase
- 卷王必备学习的MyBatis-Plus用法,不来瞧瞧吗~~
- MyBatis-Plus的分页查询,最简单的方法
- MyBatis-Plus联表查询(Mybatis-Plus-Join)
- mybatis使用注解处理数组或者集合参数
- MyBatis配置文件 —— 相关标签详解
- mybatis 调用 Oracle 存储过程并接受返回值的示例代码
- Mybatis where 1=1 和 标签详解数据库
- MyBatis学习总结(七)——Mybatis缓存详解编程语言
- mybatis部分详解编程语言
- Mybatis学习总结(一):入门基础详解编程语言
- MyBatis配置文件environments和子元素transactionManager、dataSource解析
- MyBatis配置文件(mybatis-config.xml)
- MyBatis与Oracle存储过程互通:简化开发,提高效率(mybatis调用oracle存储过程)
- 简易搭建Mybatis连接Oracle数据库(mybatis连接oracle)