Mybatis-自定义映射ResultMap用法

文章目录

    • 一、处理属性名与字段名不同问题
      • 1.通过设置查询别名,使类属性名与字段名(数据库内的名)一致
      • 2.设置全局配置,使下划线自动映射为驼峰
      • 3.ResultMap
    • 二、处理多对一映射问题
      • 前提背景
      • 1.使用级联来实现
      • 2.association 标签实现
      • 3.分步查询来实现
    • 三、处理一对多问题
      • 背景
      • 1.collection实现
      • 2.分步查询

一、处理属性名与字段名不同问题

1.通过设置查询别名,使类属性名与字段名(数据库内的名)一致

2.设置全局配置,使下划线自动映射为驼峰

<settings><setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

3.ResultMap

<resultMap id="empResultMap" type="com.mybatis.Bean.Emp"><!--        id,说明主键,property 表示属性名,column 表示字段名--><id property="eid" column="eid" ></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="sex" column="sex"></result><result property="email" column="email"></result><result property="did" column="did"></result>
</resultMap><select id="getEmpt" resultMap="empResultMap">select * from emp
</select>

二、处理多对一映射问题

前提背景

package com.mybatis.Bean;public class Dept {private int did;private String name;public int getDid() {return did;}public void setDid(int did) {this.did = did;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Dept{" +"did=" + did +", name='" + name + '\'' +'}';}
}
package com.mybatis.Bean;public class Emp {private int eid;private String name;private int age;private char sex;private String email;private  Dept dept;public Dept getDept() {return dept;}public void setDept(Dept dept) {this.dept = dept;}@Overridepublic String toString() {return "Emp{" +"eid=" + eid +", name='" + name + '\'' +", age=" + age +", sex=" + sex +", email='" + email + '\'' +", dept=" + dept +'}';}public int getEid() {return eid;}public void setEid(int eid) {this.eid = eid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}

1.使用级联来实现

<resultMap id="empResultMap" type="com.mybatis.Bean.Emp"><!--        id,说明主键,property 表示属性名,column 表示字段名--><id property="eid" column="eid" ></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="sex" column="sex"></result><result property="email" column="email"></result><result property="dept.did" column="did"></result><result property="dept.name" column="dname"></result>
</resultMap><select id="getEmpt" resultMap="empResultMap">select * from emp left join dept 
</select>

2.association 标签实现

 <resultMap id="empResultMap_" type="com.mybatis.Bean.Emp"><!--        id,说明主键,property 表示属性名,column 表示字段名--><id property="eid" column="eid" ></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="sex" column="sex"></result><result property="email" column="email"></result><association property="dept" javaType="com.mybatis.Bean.Dept"><id property="did" column="did"></id><id property="name" column="name"></id></association></resultMap>

3.分步查询来实现

在这里插入图片描述

三、处理一对多问题

背景

package com.mybatis.Bean;import java.util.List;public class Dept {private int did;private String name;private List<Emp> emps;public List<Emp> getEmps() {return emps;}@Overridepublic String toString() {return "Dept{" +"did=" + did +", name='" + name + '\'' +", emps=" + emps +'}';}public void setEmps(List<Emp> emps) {this.emps = emps;}public int getDid() {return did;}public void setDid(int did) {this.did = did;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

1.collection实现

   <resultMap id="xx" type="com.mybatis.Bean.Dept"><id property="did" column="did"></id><result property="name" column="name"></result><!--        collection 处理一对多的映射关系ofType 表示集合中的属性类型
--><collection property="emps" ofType="com.mybatis.Bean.Emp"><id property="eid" column="eid"></id><result property="name" column="name"></result></collection></resultMap><select id="xxx" resultMap="xx"></select>

2.分步查询

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586233.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索数据库-------MYSQL故障排除与优化

目录 mysql逻辑架构图 一、MySQL 数据库故障 1.1 MySQL 单实例故障排查 1.1.1故障现象 1 1.1.2故障现象 2 1.1.3故障现象 3 1.1.4故障现象 4 1.1.5故障现象 5 1.1.6故障现象 6 1.1.7故障现象 7 1.1.8故障现象 8 1.2MySQL 主从故障排查 1.2.1故障现象 1 1.2.2故障…

SSM框架学习——Spring事务管理

Spring事务管理 概念 事务&#xff08;Transaction&#xff09;是访问并可能操作各种数据项的一个数据库操作序列&#xff0c;这些操作要么全部执行&#xff0c;要么都不执行&#xff0c;是一个不可分割的工作单元。 事务有如下特性&#xff1a; 原子性隔离性一致性持久性 …

789. 数的范围 (二分学习)

1.确定一个区间&#xff0c;使得目标值一定在区间中 2.找一个性质满足&#xff1a; &#xff08;1&#xff09;性质具有二段性 &#xff08;2&#xff09;答案是二段性的分界点 3.整数二分&#xff08;处理红色右端点和绿色左端点&#xff09; //代码1&#xff1a;右端点 int…

搜索与图论——Prim算法求最小生成树

在最小生成树问题里&#xff0c;正边和负边都没问题 朴素版prim算法 时间复杂度O(n^2) 生成树&#xff1a;每一次选中的t点&#xff0c;它和集合的距离对应的那条边&#xff0c;就是生成树的一条边 算法流程和dijkstra算法非常相似 #include<iostream> #include<cs…

算法——矩阵,被围绕的区域

. - 力扣&#xff08;LeetCode&#xff09; 最开始也是考虑使用dfs&#xff0c;对于矩阵中的每个点&#xff0c;如果能到达边界的O&#xff0c;则跳过继续dfs。否则如果上下左右四个方向都无法到达边界的O&#xff0c;则说明当前的无法到达&#xff0c;在一个set中记录他的行数…

LLMs 可能在 2 年内彻底改变金融行业

在艾伦图灵研究所&#xff08;The Alan Turing Institute&#xff09;最新的一项研究中&#xff0c;我们看到了大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;的一种可能性。它有望通过检测欺诈行为、生成财务洞察以及自动化客户服务&#xff0c;…

十五.PyEcharts常用视图(1)

目录 十二.PyEcharts常用视图(1) 1-PyEcharts-Faker 2-常用视图 2.1 柱状图 普通柱状图 条形柱状图 堆叠柱状图 象形柱状图 颜色自定义 2.2 折线图 基本折线图 折线图常用属性 面积图 堆叠面积图 2.3 散点图 2.4 双轴图 2.5 饼图 基本饼图 空心饼图 玫瑰图…

机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战,以及XGBClassifier分类器的调优策略

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战&#xff0c;以及XGBClassifier分类器的调优策略。XGBClassifier是基于eXtreme Gradient Boosting (XGBoost)算法的分类器模型&#xff0c;在机器学习领…

热榜!基于jsp+mysql的JSP在线水果销售商城系统设计实现【建议收藏】

热榜&#xff01;基于jspmysql的JSP在线水果销售商城系统设计实现【建议收藏】 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎…

人工智能+的广泛应用,已渗透到生活的方方面面

引言 随着科技的不断进步和人工智能技术的快速发展&#xff0c;我们正处于一个人工智能时代。人工智能不仅仅是一种技术&#xff0c;更是一种革命性的变革力量&#xff0c;它正在以前所未有的方式改变着我们的生活和工作方式。 人工智能&#xff08;AI&#xff09;指的是人工…

Go 源码之互斥锁 Mutex

文章目录 一、总结二、源码&#xff08;一&#xff09;Mutex&#xff08;二&#xff09; Lock&#xff08;三&#xff09;Unlock 三、常见问题有劳各位看官 点赞、关注➕收藏 &#xff0c;你们的支持是我最大的动力&#xff01;&#xff01;&#xff01;接下来会不断更新 golan…

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距&#xff0c;作为预测模型的重要部分&#xff0c;目前很多函数能绘制校准曲线。 一般分为两种&#xff0c;一种是通过Hosmer-Lemeshow检验&#xff0c;把P值分为10等分&#xff0c;求出每等分的预测值和实际值的差距. 另外一种是calibra…