关于mybatis:mybatis-配置详解

10次阅读

共计 4903 个字符,预计需要花费 13 分钟才能阅读完成。

mybatis-config.xml 外围配置文件

mybatis-config.xml 蕴含的内容如下

  • configuration(配置)
  • properties(属性)
  • settings(设置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境配置)
  • environment(环境变量)
  • transactionManager(事务管理器)
  • dataSource(数据源)
  • databaseIdProvider(数据库厂商标识)
  • mappers(映射器)

留神元素节点的程序!程序不对会报错

1. environments 元素

<environments default="development">
 <environment id="development">
   <transactionManager type="JDBC">
     <property name="..." value="..."/>
   </transactionManager>
   <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>
 <environment id="test">
   <transactionManager type="JDBC">
     <property name="..." value="..."/>
   </transactionManager>
   <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>
  • environments 配置 mybatis 多套环境,将 sql 映射到多个不同的数据库上,必须指定一个默认环境,即 default=”development”

1.1 子元素 environment

其中 dataSource 数据源(共三种内建的数据源类型)

        type="[UNPOOLED|POOLED|JNDI]")
  • unpooled:这个数据源的实现只是每次被申请时关上和敞开连贯
  • pooled:这种数据源的实现利用“池”的概念将 JDBC 连贯对象组织起来 , 这是一种使得并发 Web 利用疾速响应申请的风行解决形式。
  • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中应用,容器能够集中或在内部配置数据源,而后搁置一个 JNDI 上下文的援用。

注:数据源也有很多第三方的实现,比方 dbcp,c3p0,druid 等等 ….

1.2 transactionManager 事务管理器(共两种)

        <transactionManager type="[JDBC | MANAGED]"/>

2. mappers 元素(定义映射 SQL 语句文件)

次要用于找到 sql 语句的文件在哪里?能够应用不同的形式援用 sql 语句 具体的援用形式如下

  • 应用相对路径引入 sql 语句的文件
<!-- 应用绝对于类门路的资源援用 -->
<mappers>
 <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
  • 应用齐全限定资源定位符(URL)
<!-- 应用齐全限定资源定位符(URL)-->
<mappers>
 <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
  • 应用映射器接口实现类的齐全限定类名, 须要配置文件名称和接口名称统一,并且位于同一目录下
<!--
应用映射器接口实现类的齐全限定类名须要配置文件名称和接口名称统一,并且位于同一目录下
-->
<mappers>
 <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
  • 将包内的映射器接口实现全副注册为映射器然而须要配置文件名称和接口名称统一,并且位于同一目录下
<!--
将包内的映射器接口实现全副注册为映射器. 然而须要配置文件名称和接口名称统一,并且位于同一目录下
-->
<mappers>
 <package name="org.mybatis.builder"/>
</mappers>

**mapper 配置文件
次要用用关联 dao 接口中的办法,并书写 sql 语句 相当于实现了接口中的各个办法

<?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="com.xiezhr.dao.UserMapper">
    <select id="getUserList" resultType="com.xiezhr.pojo.User">
     select * from mybatis.user;
    </select>

    <insert id="addUser" parameterType="com.xiezhr.pojo.User">
        insert into mybatis.user values(#{id},#{name},#{pwd})
    </insert>

    <update id="updateUserById" parameterType="int">
        update mybatis.user set name='小头爸爸' where id=#{id}
    </update>

    <delete id="deleteUserById" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>
</mapper>

3.properties

  • 咱们都晓得在 java 开发中,通过 properties 文件来配置一些参数。这咱们就要通过 db.properties 文件来配置连贯数据库的各个属性

具体步骤如下

(1)编写 db.properties 文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456

(2)在 mybatis 外围配置文件中加在内部配置文件来连贯数据库

<?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="db.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>

    <mappers>
        <mapper resource="com/xiezhr/Dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>

4. typeAliases(定义别名)

  • 类型别名是为 java 类型这只一个短的名字。意义在于用来缩小过长类名的冗余

(1)自定义 javabean 别名

<typeAliases>
        <typeAlias type="com.xiezhr.pojo.User" alias="user"/>
</typeAliases>

如上配置之后就能够在任何中央用 user 代替 com.xiezhr.pojo.User 配置别名也可依照上面形式配置

(2)配置所有 com.xiezhr.pojo 包下的 Javabean 别名为小写的类名

<typeAliases>
   <package name="com.xiezhr.pojo"/>
</typeAliases>

通过上述配置之后, 以下的 xml 即等价

<select id="getUserList" resultType="user">
     select * from mybatis.user;
</select>
<select id="getUserList" resultType="com.xiezhr.pojo.user">
     select * from mybatis.user;
</select>

其余配置【设置】

设置罕用的有如下几个

  • 懒加载
  • 日志实现
  • 缓存的开启与敞开

上面是一个残缺的 setting 元素示例

<settings>
 <setting name="cacheEnabled" value="true"/>
 <setting name="lazyLoadingEnabled" value="true"/>
 <setting name="multipleResultSetsEnabled" value="true"/>
 <setting name="useColumnLabel" value="true"/>
 <setting name="useGeneratedKeys" value="false"/>
 <setting name="autoMappingBehavior" value="PARTIAL"/>
 <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
 <setting name="defaultStatementTimeout" value="25"/>
 <setting name="defaultFetchSize" value="100"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
正文完
 0