【3】. mybatis全局配置文件(如SqlMapConfig.xml)
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings> //(可省)
<!-- 开启全局文件中延迟加载(+ mapper映射文件中:一对一延迟加载:resultMap中(用 association(column、property、select)) ;一对多延迟加载:resultMap中(用 collection(column、property、select);)-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启全局缓存 (+ mapper映射文件中:开启mapper映射文件的二级缓存 <cache></cache>)-->
<setting name="cacheEnabled" value="true"/>
</settings>
<typeAliase> //别名定义
<package name="com.iotek.po"/>
</typeAliase>
<properties resource="db.prperties"></properties> //加载jdbc连接属性文件
<environments default="mysql"> //环境变量配置
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>//mapper映射文件配置
<package name="com.iotek.mapper"/>
</mappers>
</configuration>
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/human_resource?characterEncoding=utf-8
jdbc.username=root
jdbc.password=12345
configuration配置
- properties属性
- Settings设置
- typeAliases类型命名
- typeHandlers类型处理器
- objectFactory对象工厂
- plugins插件
- environments环境
- environment环境变量
- transactionManager事务管理器
- dataSource数据源
- 映射器
原SqlMapConfig.xml
<configuration>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql///test"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
【改后SqlMapConfig.xml】
<configuration>
<typeAliase>
//<typeAlias alias="user" type="com.iotek.po.User"/> ①
<package name="com.iotek.po"/>
</typeAliase>
<properties resource="db.prperties">
//<property name="jdbc.username" value="root"/> ①
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
//<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
//<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
//<mapper resource="sqlmap/User.xml"/> ①
//<mapper class="com.iotek.mapper.UserMapper"/> ②
<package name="com.iotek.mapper"/>
</mappers>
</configuration>
(1)properties 属性
利用 properties元素的 resource属性将外部属性文件加载进来;
加载属性的顺序:
- 读取 properties元素中定义的属性首先加载(即 上面①);
- 读取 properties元素的 resource属性加载的属性文件中的属性(即 db.properties),会覆盖掉 1;【常用】
- 读取 parameterType中传递的属性,会覆盖掉已被读取的同名属性值;
(最高优先级属性是那些作为方法参数的,即 parameterType传递过来的属性)
一般:常用加载 .properties外部属性文件的方法;在 .properties文件中,key加上特殊规则(如 jdbc.xx)。
SqlMapConfig.xml
<properties resource="db.prperties"></properties>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
如在 config下创建一个 db.properties属性文件(与 log4j.properties同目录),此时可在全局配置文件中添加< properties>利用 resource属性将 db.properties文件加载进来,通过属性文件中的键得到值,此时< DataSource>中< property name=“driver” value="${jdbc.driver}">即通过 $ {键 }获取值; 也可以直接在< properties>下添加 < property>,再通过 $ {键 }获取值;
(2)Settings 全局参数设置
会修改 Mybatis在运行时的行为方式;
ibatis的全局配置参数,包括很多的性能参数(最大线程数、最大等待时间等),通过调用这些性能参数使用 ibatis达到高性能的运行;
mybatis运行时调整全局参数(相当于软件运行时的参数);
(3)typeAliases别名定义
是 parameterType、resultType中指定类型,通过别名引用。
普通的 java类型,有很多内建的类型别名,他们都是大小写不敏感的(如:Integer——int,String——string)
自定义别名:
在全局配置文件中< typeAliase>中的:
① < typeAlias alias=>的alias:别名, type:对应的类型;
②< package>指定包中所有的类都有别名,使用类名作为别名,大小写不敏感(即 不区分大小写);
(此时mapper映射文件中 parameterType、resultType写Uesr、user都可以)
SqlMapConfig.xml
<typeAliase>
//<typeAlias alias="user" type="com.iotek.po.User"/>①
<package name="com.iotek.po"/>
</typeAliase>
(4) mappers
mapper配置:
①<mapper resource=>中使用 resource属性直接引用 mapper配置文件;
②< mapper class=>中使用 class属性引用 mapper接口的全名;
要求:需要 mapper.xml与 mapper.java同名且同目录。
③ < package name=包名> 批量对 mapper配置,自动扫描包下的所有 mapper接口;【常用】
要求:需要 mapper.xml与 mapper.java同名且同目录。
<mappers>
//<mapper resource="sqlmap/User.xml"/> ①
//<mapper class="com.iotek.mapper.UserMapper"/> ②
<package name="com.iotek.mapper"/>
</mappers>
(首页网址: https://blog.csdn.net/qq_41029923/article/details/83472411 )