mybatis-config.xml 可以改为其他名字
环境配置 environments事务管理器 transactionManager
我们常用的是JDBC:
数据源 datasource
DataSource就是为了方便连接数据库。可以取得值有:
- UNPOOLED: 不配置连接池。
- POOLED: 【推荐!!默认值!!】每次新建数据库连接很耗时,因此配置连接池,池子里的连接用完可以回收下次再用,无需重复创建更高效。常用的有dbcp, c3p0 - MySQL - 数据库连接池 C3P0,DBCP
- JNDI:不常用了
属性 properties
核心配置文件中,所有的标签元素,有顺序要求
properties必须放在最上面
引入外部配置文件
配置文件:db.properties
通过properties标签引入配置文件:
配置文件的两种写法
- 一种是通过外置的properties文件 (优先级更高!!!)
- 一种是直接在“<properties>”标签里添加属性
类型别名 typeAliases
两种设置方法
方法1:
方法2:
常见类型的别名(基本类型 vs 非基本类型)
- 基本类型 int --> 别名 _int
- 包装类型 Integer --> 别名 int
基本类型:
非基本类型:
设置 settings
cacheEnabled 开启缓存
lazyLoadingEnabled 懒加载
mapUnderscoreToCamelCase 驼峰命名转换
数据库列名:last_name
pojo属性名:lastName
logImpl 日志实现
只需掌握两个:
LOG4J
STDOUT_LOGGING:控制台输出log
映射器 mappers
推荐使用resource方式注册映射器
生命周期和作用域
SqlSessionFactoryBuilder, SqlSessionFactory, SqlSession
SqlSessionFactoryBuilder
- 作用:一旦使用SqlSessionFactoryBuilder创建过了SqlSessionFactory,就不再需要。
- 适合作用域:局部变量
SqlSessionFactory
- 作用:用来生成SqlSession。一旦创建就应该在应用运行期间一直存在,没有任何理由丢弃它,或者重新创建一个实例。可以理解为:数据库连接池。
- 适合作用域:应用作用域
- 推荐使用单例模式,或者静态单例模式
SqlSession
- 作用:连接到连接池的一个请求。线程不安全。用完之后需要赶紧关闭,否则资源被占用。
- 适合作用域:一个请求或者方法作用域
三者关系直观图: