2017-10-6-MyBatis配置简述

MyBatis配置简述

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/><!--属性-->
    <settings/><!--设置-->
    <typeAliases/><!--类型命名-->
    <typeHandlers/><!--类型处理器-->
    <objectFactory/><!--对象工厂-->
    <plugins/><!--插件-->
    <environments><!--配置环境-->
        <environment><!--环境变量-->
            <transactionManager/><!--事务管理器-->
            <dataSource /><!--数据源-->
        </environment>
    </environments>
    <databaseIdProvider/><!--数据库厂商提供者-->
    <mappers/><!--映射器-->
</configuration>

这些要素并无还是须有的,在得经常用即可,在采取时,发现如逐个出现颠倒会提示错误。

properties

<properties>性能可以当系运行时安排有周转参数,可以以配备文件写以xml文件要.properties文件中。在MyBaits中可出三种艺术使properties:

  • property子元素
  • .properties文件
  • Java程序传递

顶普遍的用法就是动.properties文件,可以管一部分数据库连接有关的键值对如数据库让,连接URL,用户名和密码等在配置文件中。
得创造一个dataSource.properties文件:

database.driver = com.mysql.jdbc.Driver
database.url = jdbc:mysql://127.0.0.1:3306/dabase_name?useUnicode=true&characterEncoding=utf8
database.username = username
database.password = password

在MyBatis中通过<properties>性能resource就好引入properties文件。如:

<properties resource = "dataSource.properties"/>

当然为足以直接下<properties>备受之property子元素引入。

  <properties>
        <property name="username" value="username"/>
        <property name="password" value="password"/>
    </properties>

settings

settings配置比较复杂,拥有众多部署规则,但是大部分情形下下默认的安排就可以运行,只生一部分常用之规则需要配置,如缓存cacheEnabled,
级联lazyLoadingEnabled和aggressiveLazyLoading,自动映射autoMappingBehavior和mapUnderscoreToCamelCase,执行器类型defaultExecutorType。

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

typeAliases

typeAliases用于供别名,并且可以装package,这样以mapper文件中得一直运用别名,不用采用带来齐包路径的全限定称号。MyBatis中别名不分轻重缓急写。

系统定义别名

MyBatis系统定义了片常用的坐对象的号,其别名和Java类型的对应规则可大概表示也:

  • 倘是中心数组类型,别名是Java类型前面加上_,如:基本型int对应的别名为_int;
  • 要是援引数据类型,别名是将拖欠型的首描写字母小写,如:Integer对应之号为integer,由于匪区分轻重缓急写,实际上写成Integer也得。

打定义别名

起定义别名可以行使以下的办法:
透过扫描包的主意,可以就此这包下的类名直接当别名引入

 <typeAliases><!--别名-->
        <package name="cn.abelib.bean"/>
    </typeAliases>

以安排文件之形式

 <typeAliases><!--别名-->
        <typeAliase alias="user"  type="cn.abelib.bean.User"/>
    </typeAliases>

typeHandler

typeHandler是类型转换器,用于在数据库类型jdbcType和Java类型javaType之间的转移。和typeAliases类似,系统由定义了常用之typeHandller用于系指定的类型转换,如果当骨子里情形下用吗可由此落实
TypeHandler<T>接口来自定义实现typeHandler。如:

// 自定义的typeHandler
public class MyTypeHandler implements TypeHandler<String> {
    Logger logger = Logger.getLogger(MyTypeHandler.class);
    public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, parameter);
    }

    public String getResult(ResultSet rs, String columnName) throws SQLException {
        String result = rs.getString(columnName);
        return result;
    }

    public String getResult(ResultSet rs, int columnIndex) throws SQLException {
        String result = rs.getString(columnIndex);
        return result;
    }

    public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
        String result = cs.getString(columnIndex);
        return result;
    }
}

使用时:

 <typeHandlers><!--用于jdbc和Java之间的类型转换-->
        <typeHandler jdbcType="VARCHAR" javaType="string"
                handler="com.abel.mybatis.MyTypeHandler"/>
    </typeHandlers>

ObjectFactory

ObjectFactory被用来以创造结果集时生成结果集实例。默认情况下利用的凡org.apache.ibatis.reflection.factory包下的DefaultObjectFactory,当然也可因需要协调继续DefaultObjectFactory实现从定义的对象工厂。

plugins

plugins可以算是得及是MyBaits最复杂、最精的机件,后面会独自来读书这一部分情。

网站地图xml地图