上一篇:MyBatis学习笔记(一)完整查询数据库流程+增删改查
mybatis_config.xml文件中可以包含以下部分
本文接下来的优化都是针对于mybatis_config.xml文件,并且每个标签都必须按照上图顺序
一、属性:相当于全局变量
1. 在properties文件中配置的变量通过properties标签引用后可以直接读取
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
mybatis_config.xml
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
2. 其中一部分变量写在标签内也可以直接读取
3. 如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
- 首先读取在 properties 元素体内指定的属性。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。
二、设置之日志工厂
日志工厂可以详细的输出数据库操作的过程和错误
1. STDOUT_LOGGING
2. LOG4J
(1)导包
依旧是通过maven仓库
(2)新建配置文件
(3)在mybatis_config.xml中配置
(4)在UserDaoTest.java中添加:
(5)函数中的几句可以放在该类的任意一个函数中使用
static Logger logger = Logger.getLogger(UserDaoTest.class);
@Test
public void testLog4j(){
logger.info("info:进入了方法");
logger.debug("debug:进入了方法");
logger.error("error:进入了方法");
}
三、类型别名
1. 为类起一个别名,使 UserMapper.xml 中resultType为类时,不用写长长的文件夹前缀
mybatis_config.xml
<typeAliases>
<typeAlias type="pojo.User" alias="User"/>
</typeAliases>
UserMapper.xml
<select id="getUserList" resultType="User">
select * from mybatis.user
</select>
2. 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
(1)在没有注解的情况下包里的所有类会自动拥有别名:首字母小写的类名来作为它的别名
mybatis_config.xml
<typeAliases>
<package name="pojo"/>
</typeAliases>
UserMapper.xml
<select id="getUserList" resultType="user">
select * from mybatis.user
</select>
(2)在有注解的情况下,注解就是别名
3. 系统自带类本身就拥有别名
四、环境配置
尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
每个数据库对应一个 SqlSessionFactory 实例
1. 环境变量
- 默认使用的环境 ID(比如:default="development")。
- 每个 environment 元素定义的环境 ID(比如:id="development")。
- 事务管理器的配置(比如:type="JDBC")。
- 数据源的配置(比如:type="POOLED")。
2. 事务管理器
在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
3. 数据源
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):
池是可以重复使用的
五、mapper映射器
1. 使用接口实现xml文件注册
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
2. 采用类接口注册
如果不通过xml文件注册,而采用类接口注册,那么接口实现的xml文件必须和类在同一个文件夹下,并且类的名字和xml必须是同名
用包名的方式注册,两文件也要同名且在同一包下,并且类的名字和xml必须是同名