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.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8username=rootpassword=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>