MyBatis的核心配置文件配置了很多影响MyBatis行为的信息,这些信息通常只会配置在一个文件中,并且不会轻易改动。
与Spring框架整合后,MyBatis的核心配置文件信息将配置到Spring的配置文件中。
MyBatis的核心配置文件的模板代码
注:元素的配置顺序不能颠倒,一旦颠倒,在 MyBatis 启动阶段将发生异常
=========================@云龍飘渺=============
MyBatis映射器由一个接口加上XML文件(SQL映射文件)组成。
MyBatis映射器也可以使用注解完成。
| 元素名称 | 描 述 | 备 注 |
|---|---|---|
| select | 查询语句,最常用、最复杂的元素之一 | 可以自定义参数,返回结果集等 |
| insert | 插入语句 | 执行后返回一个整数,代表插入的行数 |
| update | 更新语句 | 执行后返回一个整数,代表更新的行数 |
| delete | 删除语句 | 执行后返回一个整数,代表删除的行数 |
| sql | 定义一部分SQL,在多个位置被引用 | 例如一张表,列名一次定义,可以在多个SQL语句中使用 |
| resultMap | 用来描述从数据库结果集中来加载对象,是最复杂、最强大的元素 | 提供映射规则 |

| 属性名称 | 描 述 |
|---|---|
| id | 它和Mapper的命名空间组合起来使用,是唯一标识符,供MyBatis调用 |
| parameterType | 表示传入SQL语句的参数类型的全限定名或别名。是个可选属性,MyBatis能推断出具体传入语句的参数。 |
| resultType | SQL语句执行后返回的类型(全限定名或者别名)。如果是集合类型,返回的是集合元素的类型。返回时可以使用resultType或resultMap之一 |
| 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等数据库的表格可以采用自动递增的字段作为主键。有时可能需要使用这个刚刚产生的主键,用以关联其他业务。





级联关系
- 级联关系是一个数据库实体的概念,有3种级联关系:
— 一对一
— 一对多
— 多对多
- 级联的优点是获取关联数据十分方便,但级联会增加数据库系统的复杂度,同时降低系统的性能。
- 如果表A中有一个外键引用了表B的主键,A表就是子表,B表就是父表。当查询表A的数据时,通过表A的外键,也将表B的相关记录返回,这就是级联查询。
- 在MyBatis中,通过
元素的子元素 处理一对一级联关系。 - 在
元素中,通常使用以下属性。
–property:指定映射到实体类的对象属性。
–column:指定表中对应的字段(即查询返回的列名)。
–javaType:指定映射到实体对象属性的类型。
–select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。
