MyBatis映射配置文件详解

时间:2022-02-28 04:47:19

---------------------siwuxie095

   

   

   

   

   

   

   

   

MyBatis 映射配置文件详解

   

   

1、映射配置文件的名称和位置没有固定要求

   

1)位置:建议在 映射器接口所在包

   

2)名称:建议为 映射器接口名.xml

   

   

   

2、核心配置文件的内容全部写在根标签 <mapper>

   

   

   

3、映射配置文件的内容组成:映射语句(主要)

   

1)映射插入语句:insert

   

2)映射更新语句:update

   

3)映射删除语句:delete

   

4)映射查询语句:select

   

其中:

   

数据查询语句:select,数据变更语句:insert、update、delete

   

CRUD 操作中,查询操作 select 最常用

   

   

   

   

4、映射配置文件中包含的元素如下图

   

MyBatis映射配置文件详解

   

   

   

   

5、核心配置文件中的主要标签

   

1select(映射查询语句)

   

1

   

属性:id

   

描述:在当前命名空间中的唯一标识符,可被用来引用该语句

   

「可通过 namespace.id 的方式引用当前映射语句」

   

   

2

   

属性:parameterType

   

描述:指定参数的 Java 类型,进行参数映射

   

「该属性是可选的,即 可以省略」

   

   

3

   

属性:resultType

   

描述:指定返回结果的 Java 类型,进行结果映射

   

「该属性是必须的,即 不能省略」

   

   

4

   

属性:resultMap

   

描述:指定外部 resultMap 标签的 id,进行结果映射

   

   

   

注意:

   

1)parameterType 可省略不写,MyBatis 将自动进行参数映射

   

2)使用 resultType 时,如果是集合情形,那应该是集合包含的类型,而不能是集合本身

   

3)同一条映射语句中,resultType 和 resultMap 不能同时使用

   

   

   

2insert(映射插入语句)、update(映射更新语句)

   

1

   

属性:useGeneratedKeys

   

描述:是否开启数据库自增主键回填,即 keyColumn 的字段

回填到 keyProperty 的属性中

   

   

2

   

属性:keyProperty

   

描述:定义数据库中自增主键的字段名

   

   

3

   

属性:keyColumn

   

描述:定义实体类中对应自增主键的属性名

   

   

   

注意:

   

1)以上三个属性仅对 insert 和 update 有用

   

2)当需要在 insert 和 update 中开启自增主键回填时,以上三个属性都要配置

   

3)当 keyProperty 和 keyColumn 一致时,keyColumn 可省略不写,但建议都写

   

   

   

   

3delete(映射删除语句)

   

除了 useGeneratedKeys、keyProperty、keyColumn 三个属性外,

同 insert、update

   

   

   

4resultMap(结果映射)

   

1)resultMap 是最复杂也是最强大的元素,用来描述如何从数据库结果集

中来加载对象

   

   

2)使用 resultMap 可以解决两大问题

   

<1>表中字段名和实体类属性名不一致的问题

   

<2>完成高级结果映射(也称 高级查询),如:一对一、一对多、多对多

   

   

3)属性:id、type、autoMapping(默认开启)

   

   

4)resultMap 可以通过 extends 属性进行继承、扩展

   

   

   

4sql(可重用语句块)

   

用于定义可重用的 SQL 代码段,且可以包含在其它语句中,称为 SQL 片段

   

可以将公用的 SQL 片段集中写到一个映射配置文件中,在其他的映射配置

文件中,如果想要引用,需要通过 namespace.id 的方式调用

   

   

   

   

   

   

   

   

   

   

【made by siwuxie095】