04 MyBatis 映射文件

目录

前言:

一、<resultMap> 标签:映射数据库字段名与实体类属性名关系

 1.两种解决方案:

1.1 Sql语句的查询字段起与POJO属性相同的别名。

1.2.自定义映射关系

2.知识点整理:

二、<sql><include>标签:提取可重用SQL语句

1.介绍:

2.知识点整理:

三、特殊字符处理:

1.介绍:

2.特殊字符处理符号替换

3.例如:


前言

MyBatis映射文件中除了 <insert> 、 <delete> 、 <update> 、 <select> 外,还有一些标签可以使用,如<resultMap>、<sql><include>、特殊字符处理:

一、<resultMap> 标签:映射数据库字段名与实体类属性名关系

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

MyBatis可以将数据库结果集封装到对象中,是因为结果集的列名和对象属性名相同: 

 当POJO属性名和数据库列名不一致时,MyBatis无法自动完成映射关系。如:

 1.两种解决方案:

1.1 Sql语句的查询字段起与POJO属性相同的别名。

<!--解决数据库字段名与mybatis实体类字段名不一致-->
    <!--方式一:通过为数据库字段名设置别名的方式来解决-->
    <select id="findAll" resultType="com.itbaizhan.pojo.Teacher">
        select tid as id,tname as teacherName from teacher;
    </select>

1.2.自定义映射关系

在映射文件中,使用 <resultMap> 自定义映射关系:

   <!--方式二:通过resultMap映射字段名与实体类属性名的一一对应关系来解决-->
    <!--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>
   

在 <select> 标签中,使用 resultMap 属性代替 resultType 属性,使用自定义映射关系。

 <!--注意:返回结果是resultMap,不是resultType-->
    <select id="findAll" resultMap="teacherMapper">
        select * from teacher;
    </select>

2.知识点整理:

1.在MyBatis映射文件中,<resultMap>的作用是“自定义映射关系”

2. 在MyBatis映射文件中,配置属性可以使用自定义映射 “resultMap”

二、<sql><include>标签:提取可重用SQL语句

1.介绍:

<sql> 用来定义可重用的Sql片段,通过 <include> 引入该片段。如:Sql 语句的查询字段与POJO属性相同的别名,该Sql片段就可以重用

 <!--<sql>标签:将可重用的sql语句封装并起一个名字,需要的地方直接调用语句块的名字即可 id:自定义语句块的名字-->
    <sql id="selectAllField">
        select tid as id,tname as teacherName
    </sql>
    <!--<include>标签:引入可重用的sql语句块,refid:填入重用语句的名字  如下:-->
    <select id="findById" resultType="com.itbaizhan.pojo.Teacher">
        <include refid="selectAllField"></include> from teacher where tid = #{id};
    </select>

2.知识点整理:

在MyBatis映射文件中,使用<include>可以引入 <sql> 定义的Sql片段。

三、特殊字符处理:

1.介绍:

在Mybatis映射文件中尽量不要使用一些特殊字符,如: < , > 等。

我们可以使用符号的实体来表示:

2.特殊字符处理符号替换

符号实体
<&lt;
>&gt;
&&amp;
'&apos;
"&quot;

3.例如:

  <!--&gt;相当于>,在sql语句中,我们要尽可能地避免使用一些特殊字符如(>、<、'、"、&),用其他方式代替;如下:-->
    <!--当然使用特殊字符也能编译成功,因为IDEA自动帮助转换了符号,但在开发过程中还是要尽可能地避免使用特殊字符-->
    <select id="findById2" resultType="com.itbaizhan.pojo.Teacher">
        <include refid="selectAllField"></include> from teacher where tid &gt; #{id};
    </select>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis映射文件是指Mapper文件,它是Mybatis中用于配置SQL语句的文件。在Mybatis的全局配置文件中,会配置Mapper文件的资源路径,创建SqlSessionFactory时会加载这些Mapper文件。Mapper文件中包含了SQL语句的映射以及相应的参数配置。\[1\] Mapper文件的标签包括cache、cache-ref、resultMap、parameterMap、sql、insert、update、delete和select等。其中,resultMap是最复杂也是最强大的元素,用于描述如何从数据库结果集中加载对象;parameterMap已经被废弃,不推荐使用;sql是可被其他语句引用的可重用语句块;insert、update、delete和select分别对应映射的插入、更新、删除和查询语句。\[2\] 在Mapper文件中,可以使用不同的方式传递参数。单个参数可以是基本类型或对象类型,Mybatis会直接使用这个参数。多个参数会被重新包装成一个Map传入,Map的key是param1、param2或者0、1等,值就是参数的值。也可以为参数使用@Param起一个名字,Mybatis会将这些参数封装进Map中,key就是我们自己指定的名字。当参数属于业务POJO时,可以直接传递POJO。还可以封装多个参数为Map进行传递,或者将Collection/Array封装成Map传入。\[3\] 总结来说,Mybatis映射文件是用于配置SQL语句的文件,其中包含了SQL语句的映射以及参数的配置。在Mapper文件中,可以使用不同的方式传递参数。 #### 引用[.reference_title] - *1* [Mybatis 映射文件](https://blog.csdn.net/dingd1234/article/details/123028627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Mybaits(映射文件)](https://blog.csdn.net/weixin_45739322/article/details/109193542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值