Mybatis----全局配置文件 常用标签详解

1、引入DTD约束

DTD文件更够更好的约束 xml文档,并且还有智能提示,提高写代码的效率。在IDEA中引入比较方便,在文档开头写明即可,在Eclipse中还要指明 dtd 文件的路径,百度一下即可找到设置方法。

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

接下来的配置可以没有,但顺序必须严格按照如下的顺序

properties-->settings-->typeAliases-->typeHandlers-->objectFactory    

--> objectWrapperFactory-->reflectorFactory-->plugins-->environments    

-->databaseIdProvider-->mappers
2、properties引入外部配置文件

mybatis可以使用properties来引入外部properties配置文件的内容

  • resource:引入内路径下的资源
  • url:引入网络路径或者磁盘路径下的资源
  <properties resource="config/dbconfig.properties"></properties>

dbconfig.properties的内容如下,对应的数据库名叫mybatisdemo

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo
jdbc.username=root
jdbc.password=root
3、settings运行时行为设置

这个配置影响的时mybatis运行时底层,里面包含很多重要的设置项,一个setting就是一个设置项,不设置则取默认值。
格式:

  • name:设置项名
  • value:取值

下面是官方文档给出的一些设置项和它们的默认值

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

其中常用的有

  • mapUnderscoreToCamelCase:驼峰命名自动映射
  • multipleResultSetsEnabled:单statement返回多个结果集,需要数据库支持
  • useGeneratedKeys:使用自增主键
  • jdbcTypeForNull:当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型

  • lazyLoadingEnabled:懒加载,需要时才去获取值,减轻数据库压力
  • aggressiveLazyLoading:侵入式懒加载,默认true,懒加载的对象可能被任何懒属性全部加载,设为false,则每个属性都按需加载
4、别名处理器 typeAliases

typeAlias:为某个Java类型起别名

  • type: 指定要起别名的类型全类名;默认就是类型小写
  • alias:指定新的别名

为单个JavaBean起别名:

 <typeAlias type="bean.Employee" alias="emp"/>

批量起别名:

  1. name:指定包名(为当前包以及下面的子包所有类都起一个别名(默认类名小写)
<typeAliases>
	<package name="bean"/>
</typeAliases>
  1. 避免重复
    在JavaBean上使用@Alias注解,手动起别名
<typeAliases>
	<package name="bean"/>
</typeAliases>
@Alias("emp")
public class Employee {
}
5、类型处理器 typeHandler

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型。Mybatis默认为我们实现了许多TypeHandler, 当我们没有配置指定TypeHandler时,Mybatis会根据参数或者返回结果的不同,默认为我们选择合适的TypeHandler处理。当然也可以自己手写适合的typeHandler,继承BaseTypeHandler类或者实现TypeHandler接口,这里有一篇文章写的很不错MyBatis之TypeHandler

6、运行时环境 environments

mybatis可以配置多种环境,default指定某种环境,可以达到快速切换

environment:配置一个具体的环境:必须有两个标签transactionManager和dataSource,还得有属性id,id代表当前环境的唯一标识。

transactionManager:事务管理器

  • type:事务管理器的类,JDBC(JdbcTransactionFactory)||MANAGED(ManagedTransactionFactory)

datasource:数据源:

  • UNPOOLED(UnpooledDataSourceFactory)
  • POOLED(PooledDataSourceFactory)
  • JNDI(JndiDataSourceFactory)

自定义事物管理器:实现TransactionFactory接口:type指定自定义类的全类名即可
自定义数据源:实现DataSourceFactory接口,type是全类名

    <environments default="mysql">
        <environment id="mysql">
            <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>
<!--下面的Oracle环境仅仅作为示例,不能使用,Oracle环境请参照官方文档-->
        <environment id="oracle">
            <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>
7、databaseIdProvider:支持的数据库厂商

type=“DB_VENDOR”,VendorDatabaseIdProvider
有用到jdbc驱动getDatabaseProductName()方法,得到支持的数据库厂商,以供mybatis识别

<databaseIdProvider type="DB_VENDOR">
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>
8.mappers sql映射文件注册

注册配置文件:

  • resource:引入内路径下的sql映射文件
  • url:引入网络路径或者磁盘路径下的sql映射文件

注册接口:

  • class:引用(注册)接口
    • a.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下
    • b.没有sql映射文件,所有的sql都是利用注解写在接口上
<mappers>
        <mapper resource="config/EmployeeMapper.xml"/>  <!--1-->
	    <mapper class="dao/EmployeeMapper"/>    	    <!--2.a-->
        <mapper class="dao.EmployeeMapperAnnotation"/>  <!--2.b-->

<!--    批量注册:    -->
	    <package name="dao"/>
        <!-- 基于注解的mybatis能找到并识别
        	基于xml文件的就找不到了,除非将接口和xml文件放在一起
         -->
    </mappers>

基于注解,将sql语句写在接口中

public interface EmployeeMapperAnnotation {
    @Select("select * from tbl_employee where id=#{id}")
    public Employee getEmpById(Integer id);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值