Mybatis学习笔记(二)全局配置文件详解

举报
Code皮皮虾 发表于 2021/08/25 21:52:03 2021/08/25
【摘要】 Mybatis学习笔记(二)全局配置文件详解

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文件夹下创建同样的包

在这里插入图片描述

运行没有问题
在这里插入图片描述


觉得博主写的不错的读者大大们,可以点赞关注和收藏哦,谢谢各位!

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。