MyBatis 文档中提供很多不错的解读,通过阅读文档发现文档真的是个不错的东西,
本文主要是对 MyBatis 配置文件 mybatis-config.xml 的 的解读,以及对配置文
件的优化。
废话就不多BB 了,咱们先来看看文档首先给我们的配置文件:
<?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>
<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>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
如果你看的云里雾里,恭喜你,又可以学到新的知识啦。
如果你看的So Easy,恭喜你,你可以去学习新的知识啦。
<environments default = "development"></environments>
environments 指定是 Mybatis 可以配置多个环境, default 指向默认的环境。
每个 SqlSessionFactory 对应一个 environmonts。
<transactionManager type="JDBC"/>
在 MyBatis 中有两种类型的事务管理器(也就是 type[JDBC|MANAGED]"):
<dataSource type="POOLED">
<properties></properties>
<properties></properties>
<properties></properties>
<properties></properties>
<properties></properties>
</dataSource>
UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。
这种类型容易造成服务器的堵塞(在平常大的开发中并不适合)
POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免 了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使 并发 Web 应用快速响应请求。
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
定义映射 SQL 语句的文件,需要告诉 MyBatis 到哪里去找到这些语句。
改文件可以有多个,即多个文件需要多个配置。
拿MyBatis 文档中的例子来说:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
<mapper namespace="org.mybatis.example.BlogMapper"></mapper>
作用:防止 sql 语句的 id 重名。我们的映射文件往往不止一个,因为数据库中不止有一张表,当有多张表时我们可能会有多个映射文件,而这些映射文件中的sql语句往往大同小异,为了防止出现冲突的问题,使用命名空间进行加以区分。
包名+类名/包名+mapper文件名。
id: id 是唯一的,用于我们的映射文件找到我们的 sql 语句
parameterType : 参数类型
resultType:返回值类型
未优化前:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="rj/cool/dao/UserMapper.xml"/>
</mappers>
</configuration>
优化后:
在src目录下需要加一个db.properties 文件:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis? useUnicode=true&characterEncoding=utf8
&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
配置文件中:
先添加一个: <properties resource="jdbc.properties"/>
<configuration>
<properties resource="jdbc.properties"/>
<environments default="development">
<environment id="development">
<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 resource="rj/cool/dao/UserMapper.xml"/>
</mappers>
</configuration>
通过这种优化我们可以使得我们的配置文件更加灵活,更换数据库时只需要修改
db.properties文件中的内容即可。
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写.
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
<typeAlias alias="Comment" type="domain.blog.Comment"/>
<typeAlias alias="Post" type="domain.blog.Post"/>
<typeAlias alias="Section" type="domain.blog.Section"/>
<typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
当这样配置时,Blog
可以用在任何使用 domain.blog.Blog
的地方。