MyBatis学习:使用外部yaml或yml或properties文件配置MyBatis所用的数据库信息
我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具
1、本篇博客的背景和目的
我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。记录了MyBatis动态代理和使用动态代理的要求以及使用了动态代理生成的实现类。记录了MyBatis框架下传参的五种方法,占位符#和$,如何自定义别名,resultType属性的使用方法,如何处理数据库中列名和JAVA对象属性名不一致的情况,如何组装传递模糊查询的条件(一共有两种方式),动态SQL中<if>标签,<where>标签,<sql>标签的使用。本篇博客记录一下数据库信息外部配置文件:yml(yaml或者properties)。
2、我的上一篇博文
我上一篇博文总结了MyBatis的配置文件,进一步详细的说明了一下,感兴趣的读者可以移步查阅,链接如下所示:
3、为什么使用外部配置文件?
目前我们是将数据库的配置信息(用户名,密码,数据库名等)写在了MyBatis的总配置文件中。但是这样写起来有点麻烦,各种各样的信息都杂乱的写在一个文件中,不好!!
所以就有了数据库信息的外部配置文件。
多说一下:其实上面的理由有点牵强。这个外部配置文件后面在实际开发中,使用了很多的框架以后,各种需要的配置信息都会写在这里面的。可以说就是一个专门的配置文件,这今后也是一种规范。使用最多的还是yml为后缀名的文件。
4、.yml(.properties,.yaml)外部配置文件的使用方式
在这个配置文件中,我们使用 key=value 的格式来配置信息。
只不过,不一样的后缀名,展示的形式不一样而已,但是实际都是 key=value 这种格式。
例如:
jdbc.driver=com.mysql.cj.jdbc.Driver
上面等号的左侧就是 key,右侧就是 value
使用步骤如下所示:
1、在resources文件夹下创建 application.properties文件,一般都是这个文件名,这是规范。
2、配置文件中,使用 key=value 的格式来配置信息。
3、在MyBatis主配置文件中(还是离不开它!!),使用properties标签引用外部的属性配置文件。properties标签有两个属性,一个是resouce属性,这个属性的值是 resouces文件夹下的配置文件路径。还有一个url属性这个属性值是 在互联网上的某一个配置文件的地址!!
4、在使用值的位置,使用 ${key} 获取key对应的value。(这种引用方式今后在很多地方都会用到)。
多说一下:原先将数据库的配置信息写在主配置文件中的时候,在XML文件中要使用 & 的转义字符 & ,但是:在properties文件中,就不能使用转义字符了,使用了会报错的,必须使用原字符!!!
5、看一下代码
首先看一下位于resources文件夹下的 application.properties文件,代码如下所示:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowMultiQueries=true
jdbc.username=root
jdbc.password=123456
然后是 MyBatis的主配置文件:看一下注释!!!
<?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>
<!-- 使用外部配置文件,需要在resources文件夹下,也就是编译后的类路径下,注意这个标签写在前面-->
<properties resource="application.properties"></properties>
<!-- 下面设置一下日志,一定要在最上面, 其实我们可以按着Ctrl键,鼠标左击configuration标签,进去看它规定的标签顺序-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 下面我们自己声明一些别名,这里有两种语法格式-->
<typeAliases>
<!-- 第一种语法格式 type:java类型的全限定名称,一般都是自定义java类型
alias:别名
这种方法就是比较麻烦。
-->
<typeAlias type="com.dcy.domain.Student" alias="Student"></typeAlias>
<!-- 第二种语法格式 name:包名 MyBatis会自动将这个包中的所有类名作为别名,并且不区分大小写 -->
<package name="com.dcy.domain"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!-- 下面是配置一下数据源,其实后面我们就不这样配置了,都在.yml文件中配置-->
<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>
<!-- 用于指定其它mapper.xml文件的位置,也就是路径
这个路径是从target/classes根路径开始的,也即是com/**/**/这样的
使用注意:使用 / 分隔路径;一个mapper标签指定一个文件;
-->
<mappers>
<mapper resource="com/dcy/dao/StudentDao.xml"></mapper>
</mappers>
</configuration>
6、本篇博文所用代码的gitee仓库地址链接
MyBatis20220829: 动态SQL有关的MyBatis代码https://gitee.com/MissShe/MyBatis20220829.git
7、我的下一篇博文
更多推荐
所有评论(0)