SpringBoot自定义映射规则resultMapassociation一对一
- 其他
- 2025-08-03 08:18:01

介绍
例:学生表,班级表,希望在查询学生的时候一起返回该学生的班级,而一个实体类封装的是一个表,如需要多表查询就需要自定义映射。
表结构班级表
学生表
SQL语句 SELECT a.id,a.name,a.classes,b.id classesId,b.name classesNmae FROM students a,classes b WHERE a.name='蔡徐坤' and a.classes=b.id 实体类班级类
@Data public class Students { Long id; String name; }学生类
@Data public class Classes { Long id; String name; }Vo类 (返回前端)
@Data public class StudentsVo { Students students; Classes classes; } Mapper查询语句
<select id="list" resultMap="listMap"> SELECT a.id,a.name,a.classes,b.id classesId,b.name classesNmae FROM students a,classes b WHERE a.name=#{name} and a.classes=b.id </select映射规则
id:自定义规则的名称,可以当作是一个方法 type:封装到哪个类 association :一对一 javaType:子对象,如果 学生 或 班级 autoMapping:false 或 true true为自动映射属性,如果属性名和字段名一致就可以使用,不一致时使用result
<!--自定义映射规则--> <resultMap id="listMap" type="com.example.demo.demos.web.pojo.vo.StudentsVo" > <association property="students" javaType="com.example.demo.demos.web.pojo.Students" autoMapping="true"> </association> <!--封装学生类--> <association property="classes" javaType="com.example.demo.demos.web.pojo.Classes" autoMapping="true"> <id property="id" column="classesId" ></id> <result property="name" column="classesNmae"></result> </association> <!--封装班级类--> </resultMap>id:表示是主键 result:属性名不一致是使用 property:实体类属性名 column:数据字段名
结果 { "code": 200, "msg": "获取成功", "data": [ { "students": { "id": 18, "name": "蔡徐坤" }, "classes": { "id": 1, "name": "大数据5" } }, { "students": { "id": 21, "name": "蔡徐坤" }, "classes": { "id": 2, "name": "大数据1" } } ] }这里json分为两个对象封装了,一个存学生,一个存班级,也可以把学生直接存到学生对象里。
优化修改学生的实体类,直接把班级类定义 学生实体类
@Data public class Students { Long id; String name; //班级消息 Classes belong; }Mapper
<!--自定义映射规则--> <resultMap id="listMap" type="com.example.demo.demos.web.pojo.Students" > <!--设置主键--> <id property="id" column="id"></id> <!--字段映射到属性--> <result property="name" column="name"></result> <!--属性和字段但一致的情况下可以使用autoMapping="true"--> <association property="belong" javaType="com.example.demo.demos.web.pojo.Classes" > <id property="id" column="classesId"></id> <result property="name" column="classesNmae"></result> </association> <!--班级信息封装的类--> </resultMap>一样的效果,都可以查出,但是结构更好一点
{ "code": 200, "msg": "获取成功", "data": [ { "id": 18, "name": "蔡徐坤", "belong": { "id": 1, "name": "大数据5" } }, { "id": 21, "name": "蔡徐坤", "belong": { "id": 2, "name": "大数据1" } } ] }SpringBoot自定义映射规则resultMapassociation一对一由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringBoot自定义映射规则resultMapassociation一对一”
上一篇
3D工业相机及品牌集合
下一篇
【PyTorch模型转换和部署】