初始MyBatis(三) -- Mybatis配置文件解析 及 配置文件的优化

前言:

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:

<environments default = "development"></environments>

​ environments 指定是 Mybatis 可以配置多个环境, default 指向默认的环境。

​ 每个 SqlSessionFactory 对应一个 environmonts。

事务管理类型:

 <transactionManager type="JDBC"/>

​ 在 MyBatis 中有两种类型的事务管理器(也就是 type[JDBC|MANAGED]"):

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。

数据源类型:

<dataSource type="POOLED">
	<properties></properties>
	<properties></properties>
    <properties></properties>
    <properties></properties>
    <properties></properties>
</dataSource>

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。

​ 这种类型容易造成服务器的堵塞(在平常大的开发中并不适合)

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免 了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使 并发 Web 应用快速响应请求。

Mappers:

<mappers>
	<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>

  1. 定义映射 SQL 语句的文件,需要告诉 MyBatis 到哪里去找到这些语句

    ​ 改文件可以有多个,即多个文件需要多个配置。

Mapper.xml 文件:

拿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>

namespace:

<mapper namespace="org.mybatis.example.BlogMapper"></mapper>

命名空间:

作用:防止 sql 语句的 id 重名。我们的映射文件往往不止一个,因为数据库中不止有一张表,当有多张表时我们可能会有多个映射文件,而这些映射文件中的sql语句往往大同小异,为了防止出现冲突的问题,使用命名空间进行加以区分。

命名规则:

包名+类名/包名+mapper文件名。

SQL语句参数:

​ id: id 是唯一的,用于我们的映射文件找到我们的 sql 语句

​ parameterType : 参数类型

​ resultType:返回值类型

MyBatis配置文件的优化:

优化properties:

​ 未优化前:

<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文件中的内容即可。

优化sql语句较长的参数类型:

typeAliases:

​ 类型别名可为 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 的地方。

原创文章 6 获赞 6 访问量 315

猜你喜欢

转载自blog.csdn.net/qq_43619271/article/details/106149929