天天看点

mybatis学习笔记 3.1 XML配置——属性优化当前xmlenvironmentsproperties实验:properties文件和xml标签的内容同时存在xml每行注释整理版

(从有道云笔记搬运,博客做备份)

本章官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#environments

目录

  • 当前xml
  • environments
    • default
    • transactionManager
    • dataSource
  • properties
  • 实验:properties文件和xml标签的内容同时存在
    • 1.properties对,xml错
    • 2.properties错,xml对
    • 结论
  • xml每行注释整理版

当前xml

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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- &amp;是&的转义,xml里不能写& -->
				<!-- useSSL=false,这里必须写false,不然报错 -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis_study?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="rootroot" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 每一个xml(mapper)都要在这里注册,和spring类似 -->
	<mappers>
		<mapper resource="com/study/mybatis/dao/PlayersMapper.xml"/>
	</mappers>
</configuration>
           

environments

environments标签的内容拿下来:

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis_study?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
            <property name="username" value="root" />
            <property name="password" value="rootroot" />
        </dataSource>
    </environment>
</environments>
           

mybatis可以配置多种环境,但是,每个SessionFactory只能选择一种环境。

官方文档:

MyBatis 可以配置成适应多种环境

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。

default

也就是说,一个enviroment标签是一个sessionFactory,可以有很多个,用哪个,就把default的值改成哪个

default的值,就是enviroment标签的id

transactionManager

transactionManager,事务管理器

有两种:JDBC,MANAGED

JDBC就是java自带的,MANAGED没见过,官方文档是这么解释的:

JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。

MANAGED –

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

MANAGED现在用得不多,EJB那一套会和它配,了解即可

注意:如果是用spring+mybatis,则不用配置事务管理器,spring会自己接管。

官方说明:

如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

dataSource

dataSource,数据源

有三种:UNPOOLED、POOLED、JNDI

UNPOOLED:不用池,很慢,但对性能没什么要求

POOLED:用池,快

JNDI:为EJB做的,现在基本不用了

数据库连接池,用完之后不释放,放池里,下次用的时候直接取,省去了初始化连接的时间。

mybatis POOLED官方文档:

避免了创建新的连接实例时所必需的初始化和认证时间

properties

外部配置文件,经常用的,这里直接上代码

新建db.properties,路径和mybatis的xml配置文件一样

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis_study?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=root
password=rootroot
           

xml修改

<properties resource="resources/db.properties"></properties>

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

(property标签还是要写的,测试的时候给删了,报错了还找了一会= =#)

实验:properties文件和xml标签的内容同时存在

看看哪个能执行成果

1.properties对,xml错

properties文件不动,xml中,在properties标签中加一行:

<properties resource="resources/db.properties">
    <property name="password" value="123456" />
</properties>
           

结果:成功

2.properties错,xml对

把xml中的这一行改一下

<properties resource="resources/db.properties">
    <property name="password" value="rootroot" />
</properties>
           

properties文件修改

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis_study?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=root
password=111
           

结果:报错

结论

properties优先级高

xml每行注释整理版

<!-- 用哪个enviroment -->
<environments default="development">
    <!-- id -->
    <environment id="development">
        <!-- 事务管理器,此处是JDBC -->
        <transactionManager type="JDBC" />
        <!-- 数据源,此处是POOLED -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_study?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
                <property name="username" value="root" />
                <property name="password" value="rootroot" />
            </dataSource>
    </environment>
</environments>
           

继续阅读