• MyBatis的核心配置文件配置了很多影响MyBatis行为的信息,这些信息通常只会配置在一个文件中,并且不会轻易改动。

  • 与Spring框架整合后,MyBatis的核心配置文件信息将配置到Spring的配置文件中。

MyBatis的核心配置文件的模板代码
注:元素的配置顺序不能颠倒,一旦颠倒,在 MyBatis 启动阶段将发生异常
image.png
=========================@云龍飘渺=============
MyBatis映射器由一个接口加上XML文件(SQL映射文件)组成。
MyBatis映射器也可以使用注解完成。

元素名称 描 述 备 注
select 查询语句,最常用、最复杂的元素之一 可以自定义参数,返回结果集等
insert 插入语句 执行后返回一个整数,代表插入的行数
update 更新语句 执行后返回一个整数,代表更新的行数
delete 删除语句 执行后返回一个整数,代表删除的行数
sql 定义一部分SQL,在多个位置被引用 例如一张表,列名一次定义,可以在多个SQL语句中使用
resultMap 用来描述从数据库结果集中来加载对象,是最复杂、最强大的元素 提供映射规则

image.png

属性名称 描 述
id 它和Mapper的命名空间组合起来使用,是唯一标识符,供MyBatis调用
parameterType 表示传入SQL语句的参数类型的全限定名或别名。是个可选属性,MyBatis能推断出具体传入语句的参数。
resultType SQL语句执行后返回的类型(全限定名或者别名)。如果是集合类型,返回的是集合元素的类型。返回时可以使用resultType或resultMap之一
resultMap 它是映射集的引用,与元素一起使用。返回时可以使用resultType或resultMap之一
flushCache 它的作用是在调用SQL语句后,是否要求MyBatis清空之前查询的本地缓存和二级缓存,默认值为false。如果设置为true,则任何时候只要SQL语句被调用,都将清空本地缓存和二级缓存
useCache 启动二级缓存的开关。默认值为true,表示将查询结果存入二级缓存中
timeout 用于设置超时参数,单位是秒。超时将抛出异常。
fetchSize 获取记录的总条数设定
statementType 告诉MyBatis使用哪个JDBC的Statement工作,取值为STATEMENT(Statement)、PREPARED(PreparedStatement)、CALLABLE(CallableStatement)
resultSetType 这是针对JDBC的ResultSet接口而言的,其值可设置为FORWARD_ONLY(只允许向前访问)、SCROLL_SENSITIVE(双向滚动,但不及时更新)、SCROLL_INSENSITIVE(双向滚动,及时更新)

使用Map接口传递多个参数

  • 查询SQL语句经常需要多个参数,比如多条件查询。多个参数传递时,元素的属性大部分相同,几个特有属性如下:

——keyProperty:作用是将插入或更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性。如果是联合主键,可以在多个值之间用逗号隔开。
——keyColumn:用于设置第几列是主键,当主键列不是表中的第一列时需要设置。如果是联合主键时,可以在多个值之间用逗号隔开。
——useGeneratedKeys:该属性将使MyBatis使用JDBC的getGeneratedKeys()方法获取由数据库内部生产的主键,如MySQL、SQL Server等自动递增的字段,其默认值为false。

  • MySQL、SQL Server等数据库的表格可以采用自动递增的字段作为主键。有时可能需要使用这个刚刚产生的主键,用以关联其他业务。

image.pngimage.pngimage.pngimage.png
image.png

级联关系

  • 级联关系是一个数据库实体的概念,有3种级联关系:

一对一
一对多
多对多

  • 级联的优点是获取关联数据十分方便,但级联会增加数据库系统的复杂度,同时降低系统的性能。
  • 如果表A中有一个外键引用了表B的主键,A表就是子表,B表就是父表。当查询表A的数据时,通过表A的外键,也将表B的相关记录返回,这就是级联查询。
  • 在MyBatis中,通过元素的子元素处理一对一级联关系。
  • 元素中,通常使用以下属性。

–property:指定映射到实体类的对象属性。
–column:指定表中对应的字段(即查询返回的列名)。
–javaType:指定映射到实体对象属性的类型。
–select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。