MyBatis 配置文件

MyBatis 配置文件

主配置文件

mybatis配置文件两大类:1.主配置文件 2.mapper文件

之前项目中使用的 mybatis.xml 是主配置文件。

主配置文件:提供mybatis全局设置,包含日志、数据源、mapper文件位置等。
mapper文件:写sql语句,一张表一个mapper文件。

<?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>
    <!--设置日志-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <!--声明别名-->
    <typeAliases>
        <!--
            第一种语法格式:
            type:java类型的全限定名称(自定义类型)
            alias:自定义别名
            优点:别名可以自定义
            缺点:每个类型必须单独定义
        -->
        <typeAlias type="com.lln.vo.Student" alias="stu"/>
        <!--
            第二种语法格式:
            name:包名,mybatis会把这个包中所有的类名作为别名(不用区分大小写)
        -->
        <package name="com.lln.vo"/>

    </typeAliases>
    <!--配置 mybatis 环境-->
    <environments default="mysql">
        <!--id:数据源的名称-->
        <environment id="mysql">
            <!--配置事务类型:使用 JDBC 事务(使用 Connection 的提交和回滚)-->
            <transactionManager type="JDBC"/>
            <!--数据源 dataSource:创建数据库 Connection 对象
            type: POOLED 使用数据库的连接池-->
            <dataSource type="POOLED">
                <!--连接数据库的四个要素-->
                <!--driver:驱动的内容-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/lln/dao/StudentDao.xml"/>
    </mappers>
</configuration>

头部使用约束文件

<?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>
</configuration>

settings部分

settings是mybatis的全局设置,影响整个mybatis运行。这个设置一般使用默认值就可以了。

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

typeAliases声明别名

    <!--声明别名-->
    <typeAliases>
        <!--
            第一种语法格式:
            type:java类型的全限定名称(自定义类型)
            alias:自定义别名
            优点:别名可以自定义
            缺点:每个类型必须单独定义
        -->
        <typeAlias type="com.lln.vo.Student" alias="stu"/>
        <!--
            第二种语法格式:
            name:包名,mybatis会把这个包中所有的类名作为别名(不用区分大小写)
        -->
        <package name="com.lln.vo"/>

    </typeAliases>

配置环境

environments: 环境标签,里面可以配置多个environment
default:属性,表示mybatis默认连接的数据库环境

environment: 表示一个数据库的连接信息。
属性id:自定义的环境标识,唯一值。

transactionManager: 事务管理器
属性 type:表示事务管理器的类型。
type 属性值:
(1)JDBC:使用Connection对象,由mybatis自己完成事务的处理。
(2)MANAGED:管理,表示把事务的处理交给容器实现。

dataSource: 数据源,创建的Connection对象,连接数据库。
属性:type 数据源类型
type属性值:
(1)POOLED,mybatis会在内存中创建PooledDataSource类,管理多个Connection连接对象使用的连接池。
(2)UNPOOLED,不适用连接池,mybatis创建一个UnPooledDataSource类,每次执行sql语句先创建Connection对象,再执行sql语句,最后关闭Connection。
(3)JNDI,java的命名和目录服务。使用 JNDI 实现的数据源。

    <!--配置 mybatis 环境-->
    <environments default="mysql">
        <!--id:数据源的名称-->
        <environment id="mysql">
            <!--配置事务类型:使用 JDBC 事务(使用 Connection 的提交和回滚)-->
            <transactionManager type="JDBC"/>
            <!--数据源 dataSource:创建数据库 Connection 对象
            type: POOLED 使用数据库的连接池-->
            <dataSource type="POOLED">
                <!--连接数据库的四个要素-->
                <!--driver:驱动的内容-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

dataSource 配置

在 MyBatis.xml 主配置文件,配置 dataSource:
MyBatis 配置文件
MyBatis 在初始化时,根据的 type 属性来创建相应类型的数据源 DataSource,
即:
type=”POOLED”:MyBatis 会创建 PooledDataSource 实例
type=”UNPOOLED” : MyBatis 会创建 UnpooledDataSource 实例
type=”JNDI”:MyBatis 会从 JNDI 服务上查找 DataSource 实例,然后返回使用

 

数据库属性配置文件

为了方便对数据库连接的管理,DB 连接四要素数据一般都是存放在一个专门的属性文件中的。MyBatis 主配置文件需要从这个属性文件中读取这些数据。

在 resources 目录创建 jdbc.properties 文件,文件名称自定义。
MyBatis 配置文件
修改主配置文件,文件开始位置加入:

MyBatis 配置文件

使用key值:
MyBatis 配置文件

事务

(1) 默认需要手动提交事务

Mybatis 框架是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式,本身也是用 JDBC 的 Connection 对象的 commit(), rollback() .

Connection 对象的 setAutoCommit()方法来设置事务提交方式的。自动提交和手工提交

<transactionManager type="JDBC"/>

该标签用于指定 MyBatis 所使用的事务管理器。MyBatis 支持两种事务管理器类型:JDBC 与 MANAGED。

JDBC:使用 JDBC 的事务管理机制。即,通过 Connection 的 commit()方法提交,通过 rollback()方法回滚。但默认情况下,MyBatis 将自动提交功能关闭了,改为了手动提交。

MANAGED:由容器来管理事务的整个生命周期(如 Spring 容器)。

(2) 自动提交事务

设置自动提交的方式,factory 的 openSession() 分为有参数和无参数的。

    //创建方法,获取SqlSession对象
    public static SqlSession getSqlSession(){
        SqlSession session = null;
        if(factory != null){
            session = factory.openSession();
        }
        return session;
    }

有参数为 true,使用自动提交,可以修改 MyBatisUtil 的 getSqlSession()方法。

session = factory.openSession(true);

再执行 insert 操作,无需执行 session.commit(),事务是自动提交的

 

mapper文件

第一种方式:

使用mapper指定其他mapper文件的位置,相对于类路径的资源,从 classpath 路径查找文件。
优点:文件清晰,加载的文件是明确的,文件的位置比较灵活。
缺点:文件多的时候代码量比较大,管理难度大。

    <mappers>
        <mapper resource="com/lln/dao/StudentDao.xml"/>
    </mappers>

第二种方式:

指定包下的所有 Dao 接口。
name:包名,mapper文件所在的包名。
特点:把这个包中的所有mapper文件一次性全部加载。

<package name="com.xxxx.dao"/>

使用要求:此种方法要求 Dao 接口名称和 mapper 映射文件名称相同,且在同一个目录中。

上一篇:Python实现--CTF一些常用密码的编码解码功能!


下一篇:Mybatis 的三种执行器