一文带你掌握mybatis的所有全局配置


一文带你掌握mybatis的所有全局配置

文章插图
 
Mybatis全局配置文件配置properties可以在全局配置文件中配置properties标签来进行外部配置
设置属性的方式有三种
  • 在properties的属性节点resource或url所指定的资源文件中配置
  • 在properties的子节点property中配置
  • 在构建SqlSessionFactory时通过方法传入参数
外部配置文件引入jdbc.driver=com.MySQL.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/testjdbc.username=rootjdbc.password=123456<!-- 使用 properties来引入外部配置文件内容--><!-- resource引入类路径下的资源url引入网路或磁盘路径下的资源 --><properties resource="jdbc.properties"></properties><!-- 数据库配置 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value=https://www.isolves.com/it/cxkf/kj/2021-03-12/"${jdbc.driver}"/>property子节点配置<!-- 也可以使用property子节点来进行配置 --><properties resource="jdbc.properties"><property name="jdbc.password" value=https://www.isolves.com/it/cxkf/kj/2021-03-12/"123456"/>实例化时方法传参public static SqlSessionFactory createFactory(){// 获取到mybatis-config.xml配置文件 , 进而构建SqlSessionFactoryInputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("mybatis-config.xml");Properties props = new Properties();props.put("jdbc.password","123456");return new SqlSessionFactoryBuilder().build(is,props);}三种方式的顺序
  • 首先读取property子节点中指定的属性
  • 再读取使用resources或url引入的外部配置文件中属性 , 并覆盖之前的同名属性
  • 最后读取作为方法传递的参数 , 并覆盖之前的同名属性
配置settings进行mybatis的自定义设置
设置名
描述
有效值
默认值
cacheEnabled
全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 。
true | false
true
lazyLoadingEnabled
延迟加载的全局开关 。当开启时 , 所有关联对象都会延迟加载 。特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 。
true | false
false
aggressiveLazyLoading
开启时 , 任一方法的调用都会加载该对象的所有延迟加载属性 。否则 , 每个延迟加载属性会按需加载(参考 lazyLoadTriggerMethods) 。
true | false
false (在 3.4.1 及之前的版本中默认为 true)
multipleResultSetsEnabled
是否允许单个语句返回多结果集(需要数据库驱动支持) 。
true | false
true
useColumnLabel
使用列标签代替列名 。实际表现依赖于数据库驱动 , 具体可参考数据库驱动的相关文档 , 或通过对比测试来观察 。
true | false
true
useGeneratedKeys
允许 JDBC 支持自动生成主键 , 需要数据库驱动支持 。如果设置为 true , 将强制使用自动生成主键 。尽管一些数据库驱动不支持此特性 , 但仍可正常工作(如 Derby) 。
true | false
False
autoMAppingBehavior
指定 MyBatis 应如何自动映射列到字段或属性 。NONE 表示关闭自动映射;PARTIAL 只会自动映射没有定义嵌套结果映射的字段 。FULL 会自动映射任何复杂的结果集(无论是否嵌套) 。


推荐阅读