返回顶部

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

日常开发中,我们需要在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

posted @   fen斗  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示