首页 > 其他分享 >MyBaris-ResultMap定制化查询结果

MyBaris-ResultMap定制化查询结果

时间:2022-09-30 11:01:42浏览次数:51  
标签:MyBaris 映射 ResultMap 数据库 别名 resultMap 标签 定制 属性


MyBatis的ResultMap

通常来说,数据库的命名规范一般是​​xxx_xxx​​​这样子,而Java的属性命名方式一般是采用的​​小驼峰命名​​​,即eName,empNo…这样的。而MyBatis的自动映射机制要求我们必须要与数据库的字段对应。所以​​ResultMap​​​可以将我们的Java属性与数据库字段映射对应,即​​自定义的映射关系​​​。
ResultMap标签就是用来解决这种情况。

这里数据库中有两张表emp01(员工表),dept01(部门表)

MyBaris-ResultMap定制化查询结果_开发语言


一表:部门表

多表:员工表

关联字段:部门编号

ResultMap结果集映射

resultMap 元素的属性值和子节点

  1. 属性
  • id :唯一标识,此 id 值用于 select 元素 resultMap 属性的引用。
  • type :表示该 resultMap 的映射结果类型。
  1. 节点
  • result :用于标识一些简单属性,其中 column 属性表示从数据库中查询的字段名或别名, property 属性则表示查询出来的字段对应的值赋给实体对象的哪个属性。

说明:
MyBatis 中在对查询进行 select 映射的时候,返回类型可以用 resultType 也可以用 resultMap ,resultType和 resultMap 有一定关联和区别,应用场景也不同。

ResulMap标签主要是用于表的​​关联查询​​​操作以及实现pojo与数据库表的​​映射关系​​​,首先说明常用的
多表对应关系

  1. 一对一
  2. 一对多
  3. 多对一
  4. 多对多(可以拆分[成多对一+一对多])

数据库字段名和实体类属性名不一致的问题

方式一 typeAliases起别名

类型别名是为 Java 类型命名的一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
使用方式:
在著配置文件中,在settings标签中设置typeAliases子标签

<!--设置别名 -->
<typeAliases>
<!--扫描一个包 -->
<package name="com.wei.pojo"></package>
</typeAliases>

也可以为某一个类去设置别名

<typeAliases>
<typeAlias type="com.wei.pojo.Emp01" alias="student"/>
</typeAliases>

不足之处:

  1. 这张方式只为一个类设置别名,会造成大量的typeAliases标签,本身别名就是为了简化操作,这又要每一个类要配置一个typeAliases标签,失去了本身的意义。

使用注意事项:

  1. 所以通常我们都是使用​​package标签​​​,为整个pojo包下设置别名,​​这样设置的别名都是我们的类名​​,
  2. 但是也可以随便起,不建议。扫描之后的别名就是类名(不区分大小写),建议使用的时候和类名一致(小写)。
<select id="queryAll" resultType="emp01">
select empno,ename,job,mgr,sal from emp01
</select>

方式二 resultMap自定义映射关系

如果我们的pojo实体类中的字段属性与数据库中不一致,存在多表关联的操作,那么此时我们就需要使用resultMap自定义引用数据类型的数据。

多表出发 association属性

从多表的一方出发观察:

pojo类

MyBaris-ResultMap定制化查询结果_数据库_02


数据库字段

MyBaris-ResultMap定制化查询结果_开发语言_03


MyBaris-ResultMap定制化查询结果_java_04

一方出发

<!-- 一对多方向 -->
<resultMap type="Dept" id="deptMap">
<result column="name" property="name"/>
<!-- 配置多的一方 -->
<collection property="emps" column="deptno" javaType="Emp01">
<id column="empno" property="empNo" />
<result column="ename" property="eName"/>
<result column="email" property="email"/>
<result column="mgr" property="mgr"/>
<result column="job" property="job"/>
<result column="sal" property="salary"/>
</collection>
</resultMap>


标签:MyBaris,映射,ResultMap,数据库,别名,resultMap,标签,定制,属性
From: https://blog.51cto.com/u_14957231/5725635

相关文章

  • 三(二)、映射文件之select返回和resultMap
    目录结构同​​三(一)、mybatis映射文件-增删改和参数处理 ​​​中的​​目录结构​​这里需要再添加一张表:CREATETABLE`tbl_department`(`id`int(11)NOTNULLAUT......
  • 定制SD-WAN以满足您的需求
    SD-WAN开销、上传、下传和安全性是可变的,不同的企业不同的人群他们的需求都存在差异,那么如何定制适合的SDWAN方案呢? 科技领域的一切都变得越来越复杂?就是这样的技术,因为所......
  • 市面上erp软件那么多,为什么很多卖家选择定制erp?
    为什么选择定制ERP?适合自己的才是最好的啊!就连头部ERP企业提供给用户的ERP系统,应该也没有不进行个性化定制的吧,匹配很重要!规模不同、行业不同、发展阶段不同、生产模式不同......
  • 序列化类常用字段类和字段参数、序列化类高级用法之source、序列化类高级用法之定制序
    目录序列化类常用字段和字段参数常用字段类需要记住的字段类常用字段参数序列化类高级用法之source,修改序列化字段名字序列化类高级用法之定制序列化字段的俩种方式方式一......
  • 13、记住我和首页定制
    1、点击查看代码<!DOCTYPEhtml><htmllang="en"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"><metaname="viewport"content="wid......
  • 自定义映射resultMap
    1、resultMap处理字段和属性的映射关系若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射<!--resultMap:设置自定义映射属性:id:表示自定义映射的唯......
  • resultType-resultMap注意点
    注意:1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系resultType:自动映射,用于属性名和表中字段名一致的情况......
  • PipeCAD ISO定制
    PipeCADISO定制[email protected],三维管道设计软件,三维工厂设计软件,三维配管软件1概述自动生成管道ISO图有100多个选项,通过选项配置可以灵活定义出......
  • 《白皮书》:专为人脸识别定制的安全解决方案
    为全面分析人脸识别市场现状、面临的风险隐患及有效的安全保障措施,顶象近日发布《人脸识别安全白皮书》。该白皮书就保障人脸识别系统安全的能力列出具体要求,并推荐了专业......
  • 定制开发 ERP 的优势有哪些?
    定制开发ERP对企业而言是把双刃剑,成败难以把握。定制开发ERP理论上来讲是最贴合企业业务需求的,因为它是按企业需求定制,看上去似乎没什么毛病,但ERP是专业性极强的业务逻辑极......