<collection>映射集合结果查询
1.resultType和resultMap的区别2.<association>关联的结果查询3.新增返回主键4.<foreach/>标签原理及用法5.返回List<Map<String, String>>键值对格式
6.<collection>映射集合结果查询
7.Mybatis的执行流程8.MyBatis写入大量数据9.MyBatis读取大量数据(流式读取)10.MyBatis Generator 自动生成工具(dao / mapping / model)11.MyBatisPlus怎么忽略映射字段12.MyBatisPlus AutoGenrator代码自动生成13.<resultMap/> 标签支持继承 extends14.SpringData JPA、Hibernate、Mybatis三者的区别15.Mybatis代码生成——velocity模板元素16.Mybatis代码生成——velocity模板语法实体类
private String id;//主键 private String userName;//用户姓名 private List<Article> articleList;
方式一:通过<collection>封装结果集
<resultMap id="BaseRoleResultMap" type="cn.com.hellowood.springsecurity.model.RoleModel"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="is_active" property="isActive" jdbcType="BOOLEAN"/> <result column="description" property="description" jdbcType="VARCHAR"/> <result column="last_update_time" property="lastUpdateTime" jdbcType="TIMESTAMP"/> <collection property="menus" ofType="cn.com.hellowood.springsecurity.model.MenuModel" javaType="java.util.ArrayList"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="value" property="value" jdbcType="VARCHAR"/> <result column="display_value" property="displayValue" jdbcType="VARCHAR"/> <result column="url" property="url" jdbcType="VARCHAR"/> <result column="category" property="category" jdbcType="INTEGER"/> <result column="description" property="description" jdbcType="VARCHAR"/> <result column="is_active" property="isActive" jdbcType="BIT"/> <result column="last_update_time" property="lastUpdateTime" jdbcType="TIMESTAMP"/> </collection> </resultMap>
查询:
<select id="getRoles" parameterType="java.lang.Integer" resultMap="BaseRoleResultMap"> SELECT r.id,r.name,r.description,r.is_active,r.last_update_time,m.id,m.value,m.display_value,m.url,m.category,m.description,m.is_active,m.last_update_time FROM role r LEFT JOIN role_menu_xref rmx ON r.id = rmx.role_id LEFT JOIN menu m ON m.id = rmx.menu_id WHERE r.id = #{roleId,jdbcType=INTEGER} </select>
方式二:通过<collection>标签实现分段查找
<resultMap id="BaseRoleResultMap" type="cn.com.hellowood.springsecurity.model.RoleModel"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="is_active" property="isActive" jdbcType="BOOLEAN"/> <result column="description" property="description" jdbcType="VARCHAR"/> <result column="last_update_time" property="lastUpdateTime" jdbcType="TIMESTAMP"/> <collection property="menus" ofType="cn.com.hellowood.springsecurity.model.menus" javaType="java.util.ArrayList" select="getMenus" column="id"></collection> </resultMap>
对应的Mapper映射文件:
<select id="getMenus" parameterType="java.lang.Integer" resultMap="BaseMenuResultMap"> SELECT m.id,m.value,m.display_value,m.url,m.category,m.description,m.is_active,m.last_update_time FROM menu m LEFT JOIN role_menu_xref rmx ON m.id = rmx.menu_id WHERE role_id = #{roleId, jdbcType=INTEGER} </select>
查询:
<select id="getEmpByIdStep" resultMap="BaseRoleResultMap"> select * from role_model where id=#{id} </select>
<collection/>参数说明
- collection : 一个复杂的类型关联,许多结果将映射为这种类型
- property : 这是关联的 JavaBean 中的属性名, 在 RoleModel 中对应 private List<MenuModel> menus;
- javaType : property 属性对应的集合类型
- ofType : property 集合中的泛型,在 RoleModel 中是 MenuModel
- column : RoleModel 的 id ,作为参数传入被调用的 Select 语句
- select : 另外一个映射语句的 ID
合集:
MyBatis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了