1、properties
mybatis可以使用properties来引入外部properties配置文件的内容
两个参数
resource:引入类路径下的配置文件
url:引入网络路径或磁盘路径下的配置文件
dbconfig.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/baidu?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=jzb19981128
2、settings设置
settings包含许多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置项的取值
3、typeAliases
typeAliases:别名处理器,可以为java类型起别名,别名不区分大小写
typeAlias:为某个java类型起别名
type:指定要起别名的java类型的全类名;默认别名:类名的小写
alias:指定新的别名
批量起别名:为某个包下的所有类批量起别名
name:指定报名(为当前包下以及下面所有的后代包的每一个类都起一个默认的别名(类名的小写))
但是通过package包下进行批量起别名也会有问题,这是因为当包下的类名与该包下的某个包内的类名相同,此时会报错,因此有第三种为类名起别名的方式:在类里写注解别名
在批量起别名的情况下,使用@Alias注解为某个类型指定新的别名
推荐使用全类名的形式写返回值类型
4、plugins 插件机制
1)插件是 MyBatis 提供的一个非常强大的机制,我们可以通过插件来修改 MyBatis 的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行
2)四大对象:
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)
5、environments 环境配置(后期由Spring替代)-了解
1)MyBatis 可以配置多种环境,比如开发、测试和生产环境需要有不同的配置
2)每种环境使用一个 environment 标签进行配置并指定唯一标识符
3)可以通过environments 标签中的default 属性指定一个环境的标识符来快速的切换环境
4)environment-指定具体环境
id:指定当前环境的唯一标识
transactionManager、和 dataSource 都必须有
5)transactionManager
type: JDBC | MANAGED | 自定义
JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。 JdbcTransactionFactory
MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE应用服务器的上下文)。 ManagedTransactionFactory
自定义:实现 TransactionFactory 接口,type=全类名/别名
6)dataSource
type: UNPOOLED | POOLED | JNDI | 自定义
UNPOOLED:不使用连接池, UnpooledDataSourceFactory
POOLED:使用连接池, PooledDataSourceFactory
JNDI: 在 EJB 或应用服务器这类容器中查找指定的数据源
自定义:实现 DataSourceFactory 接口,定义数据源的获取方式。
实际开发中我们使用 Spring 管理数据源,并进行事7)务控制的配置来覆盖上述配置
6、databaseIdProvider 数据库厂商标识
1)、MyBatis 可以根据不同的数据库厂商执行不同的语句
2)、Type: DB_VENDOR, 使用 MyBatis 提供的 VendorDatabaseIdProvider 解析数据库厂商标识。也可以实现 DatabaseIdProvider 接口来自定义.
会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置。由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其变短.
Property-name:数据库厂商标识
Property-value:为标识起一个别名,方便 SQL 语句使用 databaseId 属性引用
3)、配置了 databaseIdProvider 后,在 SQL 映射文件中的增删改查标签中使用 databaseId
来指定数据库标识的别名
4)MyBatis 匹配规则如下:
1、如果没有配置 databaseIdProvider 标签,那么 databaseId=null
2、如果配置了 databaseIdProvider 标签,使用标签配置的 name 去匹配数据库信息, 匹配上设置 databaseId=配置指定的值,否则依旧为 null
3、如果 databaseId 不为 null,他只会找到配置 databaseId 的 sql 语句
4、MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。
7、mappers 映射器
1)、用来在 mybatis 初始化的时候,告诉 mybatis 需要引入哪些 Mapper 映射文件
2)、mapper 逐个注册 SQL 映射文件(class)
resource : 引入类路径下的文件
url : 引入网络路径或者是磁盘路径下的文件
class : 引入 Mapper 接口.
①有 SQL 映射文件 , 要求 Mapper 接口与 SQL 映射文件同名同位置.
<mappers>
<mapper class="com.atguigu.mybatis.dao.EmployeeMapper"/>
</mappers>
②没有 SQL 映射文件 , 使用注解在接口的方法上写 SQL 语句.
<mappers>
<mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/>
</mappers>
3)、使用批量注册,这种方式要求 SQL 映射文件名必须和接口名相同并且在同一目录下
<mappers>
<package name="com.atguigu.mybatis.dao"/>
</mappers>
注意:
标签先后顺序