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

您的资助是我最大的动力!
金额随意,欢迎来赏!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现