mybatis配置文件

Posted 小马Mark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis配置文件相关的知识,希望对你有一定的参考价值。

主配置文件

项目中使用的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>
    <properties resource="jdbc.properties"/>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

<!--    <typeAliases>-->
<!--        <typeAlias type="com.maj.domain.Account" alias="acc" />-->

<!--        <package name="com.maj.domain"/>-->
<!--    </typeAliases>-->

    <environments default="mydev">
        <environment id="mydev">
            <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="com/maj/dao/AccountDao.xml"/>
    </mappers>
</configuration>

dataSource标签

Mybatis 中访问数据库,可以连接池技术,但它采用的是自己的连接池技术。

在 Mybatis 的 mybatis.xml配置文件中,通过<dataSource type=” POOLED” >来实现 Mybatis 中连接池的配置。

dataSource类型

<dataSource type=” POOLED” >

type的取值:

  • UNPOOLED:不使用连接池的数据源
  • POOLED:使用连接池的数据源
  • JNDI:使用JNDI的数据源

UNPOOLED、POOLED数据源都实现了javax.sql.DataSource接口,而JNDI不一样

dataSource的配置

<environments default="mydev">
        <environment id="mydev">
            <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>

事务

默认手动提交事务

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

Connection对象的setAutoCommit()方法来设置事务提交方式的。

<transactionManager type="JDBC"/>

该标签用于指定MyBatis所使用的事务管理器。

MyBatis支持两种事务管理器类型:JDBC与MANAGED

  1. JDBC:使用JDBC的事务管理机制。即,通过Connection的commit()方法提交,通过rollback()方法回滚。但默认情况下,MyBatis将自动提交功能关闭了,改为了手动提交。即程序中需要显式的对事务进行提交或回滚。从日志的输出信息中可以看到。
  2. MANAGED:由容器来管理事务的整个生命周期(如 Spring 容器)。

自动提交事务

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

sqlsession openSession( );
sqlsession openSession( boolean autoCommit) ;

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

session = factory.openSession(true);

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

使用数据库属性配置文件

  1. 在resources目录创建jdbc.properties文件,文件名称自定义。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test1
jdbc.username=root
jdbc.password=maj6226543
  1. 在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>
    <properties resource="jdbc.properties"/>   <!--必须放在最开始的位置-->
    
  1. 使用propertis文件中的内容
<dataSource type="POOLED">

    <property name="driver" value="$jdbc.driver"/>  <!--使用$key取值-->
    <property name="url" value="$jdbc.url"/>
    <property name="username" value="$jdbc.username"/>
    <property name="password" value="$jdbc.password"/>
</dataSource>

别名

Mybatis 支持默认别名,我们也可以采用自定义别名方式来开发,主要使用在<select resultType="别名">

mybatis-config.xml 主配置文件定义别名 :

<!--  mybatis-config.xml 主配置文件  -->
<typeAliases>
    <!--
		<typeAlias type="..." alias="...">
            1. 定义单个类型的别名,需要一个一个的起别名
            2. type:类型的全限定名称
            3. alias:自定义别名
	-->
    <typeAlias type="com.maj.domain.Account" alias="acc" />
	。。。
    <!--
		<package name="..."/>
            1. 批量定义别名:扫描整个包下的类,别名为类名(不区分大小写)
            2. name:包的全限定名称
	-->
    <package name="com.maj.domain"/>
    。。。
</typeAliases>

mappers(映射器)

  1. <mapper resource=" " />

    使用相对于类路径的资源,从 classpath 路径查找文件

    例如:

    <mapper resource="com/bjpowernode/dao/StudentDao.xml" />
    
  2. <package name=""/>

    指定包下的所有 Dao 接口

    例如:

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

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

以上是关于mybatis配置文件的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis-02-笔记

MyBatis-01-笔记

MyBatis 实践 -配置

MyBatis配置的优化

Mybatis中 mappers配置

mybatis配置(Configuration.xml)详解