首页 > 其他分享 >Mybatis.xml中何时需要写ResultMap映射,什么时候需要给字段设置别名呢

Mybatis.xml中何时需要写ResultMap映射,什么时候需要给字段设置别名呢

时间:2024-04-14 17:37:00浏览次数:27  
标签:xml 映射 标签 数据库 ResultMap 字段 别名 Mybatis 字段名

日常开发中,我们需要在mybatis.xml文件中,将数据库的查询结果映射到实体类中,那何时需要给字段起别名,何时不需要呢 ?总是不太清晰,接下来梳理记录一下。

 

至于一般什么时候,使用resultMap,一版什么时候使用别名呢,如果实体的每个字段都和数据库中的字段名称 是不一样的,那一般就采用的是ResultMap来对实体字段和数据库的字段进行统一的映射,

如果只是一两个字段是不一致的,则直接对不同的那两个字段起别名进行字段对应即可!。这是我的个人见解哈,如果有什么不足的,还请大家多多指教~

resultMap介绍

该标签的作用是自定义映射关系。

Mybatis可以将数据库结果封装到对象中,是因为结果集和对象属性名相同(也就是你写的pojo类型的参数名和数据库的字段名相同)

但是如果当他们不一样时,Mybatis就无法自动完成映射关系。

 

那我们该如何解决呢?

第一种方法我们可以起别名。

 <select id="find" resultType="com.gq.pojo.Teacher">
        select tid as id,tname as teacherName from teacher
    </select>

 

其中tid  、 tname都是数据库字段名称,但是pojo的字段名分别为id 、 teacherName 因为数据库字段名称和实体字段不一致,则无法直接映射上去,因此可以给数据库查出来的字段名  起成和数据库一样的字段名,这样就能自动映射过去了。

 

同样还有第二种办法:我们通过ResultMap标签来映射<select>的返回结果

例子:

<!-- id:自定义映射名 type:自定义映射的对象类型  -->
<resultMap id="teacherMapper" type="com.itbaizhan.pojo.Teacher">
  <!-- id定义主键列  property:POJO属性名 column:数据库列名  -->
  <id property="id" column="tid"></id>
  <!-- result定义普通列  property:POJO属性名 column:数据库列名  -->
  <result property="teacherName" column="tname"></result>
</resultMap>

 

后面直接使用reultMap代替resultType

<select id="findAll" resultMap="teacherMapper">
   select * from teacher
</select>

三、一些标签的基本介绍

(1)id:该标签是表示主键

(2)result:一般属性用来配置映射关系的

(3)association标签:

property:表示pojo类集合中的属性

select:表示所需要的那个类的查询语句

column:从resultMap中传过去用作查询的参数

ofType:集合属性中的对象(可以不写)

(4)collection标签:

property:表示pojo类集合中的属性

select:表示所需要的那个类的查询语句

column:从resultMap中传过去用作查询的参数

ofType:集合属性中的对象(可以不写)

association和collection之间的区别就是前者是针对一个对象而言,后者是针对一个集合而言!


参考 : https://blog.csdn.net/gaoqiandr/article/details/132818768

标签:xml,映射,标签,数据库,ResultMap,字段,别名,Mybatis,字段名
From: https://www.cnblogs.com/isme-zjh/p/18134396

相关文章

  • Mybatis中ResultMap的嵌套查询
    要点:多对一:查询的多个对象中有一个属性包含一个复杂对象,使用association标签嵌套一对多:查询的单个对象中的一个属性包含多个其他对象,使用collection标签嵌套javaType为实体类中属性的类型,为常用基本数据类型时可以省略ofType则是用来指定到List或集合中的实体类类型,泛型中的......
  • 在MyBatis中,可以使用以下动态SQL标签来编写灵活的SQL语句
    一、<if>:条件判断标签,用于在SQL语句中添加条件判断。通过判断给定的条件是否成立,决定是否包含相应的SQL片段。示例:<selectid="getUserList"resultType="User">SELECT*FROMuser<where><iftest="username!=null">ANDusername=#{userna......
  • java: 无法访问org.mybatis.spring.annotation.MapperScan、类文件具有错误的版本 61.
    使用的Mybatis-spring依赖的版本3.0.1太高,将版本改为2.2.2<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><depende......
  • mybatis怎么实现insert into多个数据-oracle数据库
    第一种<insertid="insertBatch"> INSERTALL <foreachcollection="list"item="user"separator=""close="SELECT*FROMdual"index="index"> INTOLY_TEST(id,name,age)VALUES(#{user......
  • oracle数据库listagg、wm_concat、xmlagg的用法
    1.listaggLISTAGG(measure_expr:any[,delimiter_expr:VARCHAR])WITHINGROUP(ORDERBYcolumn_exprASC/DESC)语法注解LISTAGG函数一般配合GROUPBY作为聚合函数(也可用于开窗函数)使用,可以传入两个参数变量measure_expr:要合并处理的字段delimiter_expr:给定分隔符号......
  • MyBatis动态SQL
    MyBatis动态SQL动态SQL简介动态SQL是MyBatis的强大特性之一。如果你使用过JDBC或其它类似的框架,你应该能理解根据不同条件拼接SQL语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态SQL,可以彻底摆脱这种痛苦。使用动态......
  • Mybatis中update语句的写法详解
    mybatis中有很多时候是需要写到update语句的,update语句可以直接写成固定字段也可以拼接成动态的sqlmybatis的xml更新语句中  update标签可以直接写如下的update语句(方式一)<updateid="updateNoticeTest">updateoutbound_notice_testsetnotice_state=......
  • 美团二面:为什么不推荐使用 MyBatis 二级缓存?大部分人都答不上来!
    为了增加查询的性能,MyBatis提供了二级缓存架构,分为一级缓存和二级缓存。这两级缓存最大的区别就是:一级缓存是会话级别的,只要出了这个SqlSession,缓存就没用了。而二级缓存可以跨会话,多个会话可以使用相同的缓存!一级缓存使用简单,默认就开启。二级缓存需要手动开启,相对复杂,而且要......
  • 26.前后端学习小建议和xml文件中一些总结
    首先关于xml文件中一般用到的东西很容易忘记写这个导致在html文件中无法识别语法<htmllang="en"(thymeleaf:)xmlns:th="http://www.thymeleaf.org"(shiro和thymeleaf:)xmlns:shiro="http://www.thymeleaf.org/thymeleaf-extras-shiro"(springsecurity和thymeleaf:)xml......
  • 25.再次整理mybatis坑
    前面就没有整理好mybatis也是因为跳过这个直接去学的springboot也导致没有更深层次理解也是逢坑踩坑一下我maven版本为2.2.5.RELEASE1导入mybatis和mysql驱动依赖如果mybatis加载不出来降低版本参考:https://blog.csdn.net/S852509769/article/details/134456125<!-......