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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis XMLMyBatis 使用的一种配置文件。它用于存储 SQL 语句和映射信息。 MyBatis XML 文件的基本结构如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <!-- SQL 语句 --> <select id="getUserById" resultType="com.example.domain.User"> SELECT * FROM users WHERE id = #{id} </select> <!-- 映射信息 --> <resultMap id="userResultMap" type="com.example.domain.User"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="email" property="email" /> </resultMap> </mapper> ``` 其,`mapper` 标签是必须的,它的 `namespace` 属性对应着 Java 接口的全限定名。`select` 标签用于定义查询语句,其 `id` 属性对应着 Java 接口的方法名,`resultType` 属性对应着返回类型。`resultMap` 标签用于定义映射信息,其 `id` 属性是该映射信息的名称,`type` 属性对应着返回类型。`id` 和 `result` 标签用于定义列与属性之间的映射关系。 通过使用 MyBatis XML 文件,我们可以将 SQL 语句和映射信息与 Java 代码分离开来,使得程序的结构更加清晰,并且方便维护。 ### 回答2: Mybatis是一款轻量级的Java持久层框架,在使用Mybatis时,我们通常会使用XML文件来配置和映射SQL语句。 首先,我们需要Mybatis配置文件设置数据源和相关的属性,例如数据库驱动、连接URL、用户名和密码等。接着,我们需要定义Mapper接口,该接口定义了数据库操作的方法。在Mapper接口,我们通过@Insert、@Update、@Delete和@Select等注解来标记不同类型的SQL语句。 然后,我们需要创建一个与Mapper接口对应的XML配置文件。在XML文件,我们可以使用<resultMap>元素来定义SQL查询结果的映射关系,使用<select>元素来定义查询语句,使用<insert>、<update>和<delete>元素来定义增删改操作。 在<resultMap>元素,我们可以使用<id>、<result>和<association>等元素来定义主键、字段和关联对象的映射关系。例如,<resultMap id="userMap" type="User"> <id column="id" property="id"/> <result column="name" property="name"/> <association property="department" javaType="Department"> <id column="dept_id" property="id"/> <result column="dept_name" property="name"/> </association> </resultMap> 在<select>元素,我们需要指定SQL语句的ID、返回结果的映射关系、参数类型和返回类型等属性。例如,<select id="getUserById" resultMap="userMap" parameterType="int" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> 同样地,在<insert>、<update>和<delete>元素,我们也需要指定SQL语句的ID、参数类型等属性。 最后,我们需要Mybatis配置文件加载Mapper接口和XML文件,使其可以被框架识别和调用。可以通过<typeAliases>元素来定义别名,通过<mapper>元素来引入Mapper接口和XML文件。例如,<typeAliases> <package name="com.example.model"/> </typeAliases> <mappers> <mapper class="com.example.mapper.UserMapper"/> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> 总结来说,MybatisXML配置文件主要包括数据源和相关属性的配置、Mapper接口和XML文件的定义、SQL语句的编以及结果映射的配置。通过合理配置和使用MybatisXML文件,我们可以方便地进行数据库操作。 ### 回答3: MyBatis是一种Java持久化框架,提供了一种将SQL语句与Java代码解耦的方式。在MyBatis,使用XML文件来编SQL语句。 首先,需要创建一个Mapper XML文件。Mapper XML文件是将SQL语句映射到Java方法的配置文件。该文件通常与对应的Java接口放在同一个包下,文件名为接口名加上“Mapper.xml”。 在Mapper XML文件,首先需要定义一个命名空间,用于唯一标识该Mapper文件。命名空间可以使用`<mapper namespace="com.example.mapper.MyMapper">`这样的方式进行定义。接下来,可以开始编具体的SQL语句。 可以使用`<select>`标签来编查询语句,在`<select>`标签内部需要指定SQL语句和返回值类型。如`<select id="getUserById" parameterType="int" resultType="com.example.model.User">`,其`id`属性用于指定方法名称,`parameterType`属性用于指定参数类型,`resultType`属性用于指定返回值类型。 其他常用的标签还包括`<insert>`、`<update>`和`<delete>`,分别用于编插入、更新和删除语句。 在SQL语句编的过程,可以使用动态SQL语句,如`<if>`、`<choose>`、`<when>`和`<otherwise>`等标签。这些标签可以根据条件动态生成SQL语句,提供更灵活的编程方式。 除了SQL语句,还可以在Mapper XML文件定义一些公用的SQL片段,可以使用`<sql>`标签来定义,通过`<include>`标签来引用。 在编完成Mapper XML文件后,还需要MyBatis的配置文件进行配置,将Mapper XML文件和相应的Java接口进行绑定。 通过以上的步骤,就可以使用MyBatisXML来编SQL语句,实现持久化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值