Mybatis学习笔记(二)全局配置文件详解
1、properties——引入外部配置文件
dbconfig.properties
driverclass=com.mysql.cj.jdbc.Driver
username=root
password=root
url=jdbc:mysql://localhost:3306/mybatis0325?serverTimezone=Asia/Shanghai&useSSL=true
mybatis-config.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>
<!-- 引入外部配置文件和Spring的<context:property-placeholder>相同 -->
<!--
resource:从类路径下开始引用
url:引用磁盘路径或者网络路径的资源
-->
<properties resource="dbconfig.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置连接池 -->
<dataSource type="POOLED">
<!-- 用${}取值 -->
<property name="driver" value="${driverclass}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 引入我们自己编写的每一个接口的实现文件 -->
<mappers>
<!-- resource:表示从类路径下找资源 -->
<mapper resource="EmployeeDao.xml" />
</mappers>
</configuration>
测试
@Test
publicvoid test() throws IOException {
//1、根据全局配置文件创建出一个SqlSessionFactory
//SqlSessionFactory:是SqlSession工厂,负责创建SqlSession对象
//SqlSession:sql会话(代表和数据库的一次会话)
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Employee empById;
//获取和数据库的一次会话:getConnection()
SqlSession openSession = sqlSessionFactory.openSession();
try {
//使用SqlSession操作数据库,获取dao接口的实现
EmployeeDao mapper = openSession.getMapper(EmployeeDao.class);
empById = mapper.getEmpById(1);
} finally {
//关闭连接
openSession.close();
}
System.out.println(empById);
}
2、settings——修改mybatis的运行时行为
以下测试Mybatis的驼峰命名规则
settings具体参数配置可参考Mybatis的官方文档
什么是驼峰命名法?
骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。
增加表中字段
给新建字段设置值
可以看见loginAccount值为null
在mybatis-config.xml添加如下
<!-- 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。 -->
<settings>
<!-- 开启驼峰命名规则 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
测试,loginAccount有值
3、typeAliases——为类型起别名
3.1、单个起别名
在mybatis-config.xml添加如下
<!-- 类型别名;为常用的类型(javaBean)起别名 -->
<typeAliases>
<!-- typeAlias:就是为一个javaBean起别名;别名默认就是类名(不区分大小写) -->
<!-- alias="" 指定一个别名 -->
<typeAlias type="com.dong.bean.Employee" alias="emp"/>
</typeAliases>
EmployeeDao.xml
测试
3.2、批量起别名
此时resultType还写emp就会报错
写类名
测试
3.3、在批量起别名的时候自定义别名
使用emp测试
4、environments——环境配置
<!-- environments配置环境
environment:配置一个具体的环境,每一个环境都需要一个事务管理和一个叫数据源
default="development":默认使用哪个环境
后来数据源和事务管理都是Spring来做
-->
<environments default="development">
<!-- 当前环境的唯一标识 id="testDev" -->
<environment id="testDev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driverclass}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置连接池 -->
<dataSource type="POOLED">
<!-- 用${}取值 -->
<property name="driver" value="${driverclass}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
好处:开发、测试和生产环境需要有不同的配置,就可以使用该配置。
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
每个数据库对应一个 SqlSessionFactory 实例
5、databaseIdProvider——数据库移植
标签放置顺序,可以缺少,但顺序要一致,不然就会报错
应用场景
项目从mysql切换到Oracle或者其他数据库,由于语法不同,我们写的Sql语句就会报错,所以就要使用databaseIdProvider。
按顺序添加databaseIdProvider
<!-- mybatis考虑数据库移植性 -->
<databaseIdProvider type="DB_VENDOR">
<!-- name="":数据库厂商标识 value="":给这个标识起的名字 -->
<property name="MYSQL" value="mysql"/>
<property name="Orcale" value="oracle"/>
</databaseIdProvider>
sql语句分类设置
如果能精确匹配就匹配,没有就用模糊的
6、mappers——批量注册
mapper中可填参数
<!-- 写好的sql映射文件需要使用mappers注册进来 -->
<mappers>
<!--
url:从磁盘或者网络路径引用
class:直接引用接口的全类名
但是需要xml和dao接口放在同一目录下,而且文件名和接口名一致
resource:在类路径下找Sql映射文件
-->
<mapper class="com.dong.dao.EmployeeDao"/>
</mappers>
批量注册
<mappers>
<package name="com.dong.dao"/>
</mappers>
注意:xml要和java放在同一目录下,且名称一样
这么操作确实看着有点不顺眼,可以在conf文件夹下创建同样的包
运行没有问题
觉得博主写的不错的读者大大们,可以点赞关注和收藏哦,谢谢各位!
- 点赞
- 收藏
- 关注作者
评论(0)