MyBatis全局配置文件的详解

简介

        MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

全局配置文件

<?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"></properties>

	<!-- 别名 -->
	<typeAliases>
		<typeAlias type="com.example.mybatis.entity.User" value="u"></typeAlias>
		<package name="com.example.mybatis.enity" />
	</typeAliases>

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


	<!-- 环境们 -->
	<environments default="development">
		<!-- id为环境的唯一标识 -->
		<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>

	<!-- 多数据库支持 -->
	<databaseIdProvider type="DB_VENDOR">
		<property name="MySQL" value="mysql"></property>
		<property name="Oracle" value="oracle"></property>
		<property name="SQL Server" value="sql server"></property>
	</databaseIdProvider>

	<!-- sql映射文件注册 -->
	<mappers>
		<mapper resource="com/example/mybatis/dao/UserMapper.xml"></mapper>
		<mapper class="com.example.mybatis.dao.UserMapperAnnotaion"></mapper>
	</mappers>
</configuration>

标签介绍

1.properties

      properties标签是为MyBatis的全局配置文件设置属性,由外部文件引入,一般使用配置文件类来引入数据

源。

        数据源的属性文件的名称为编写规范为xxxx.properties,博主这边设置的数据源名称为db.properties,配置文

件的内容编写规范为key=value,等于号两边没有空格例如:

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=root
password=root

         properties的引入方式有两种,一种是resource:在包内部映入,例如属性文件在config包下面,那么它的属性引入为:<properties resource="db.properties"></properties>;另一种的引入为url:映入网络文件或磁盘中的文件。


2.settings

        settings设置在全局配置文件中比较重要

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



3.typeAliases

       typeAliases是为java类型起别名的一个标签,默认的为类名的小写,如果设置了value那么它的别名为value的值,package设置的是为当前包包括子包下面的所有类,这就有个问题,如果当前包和子包下面的类名一样,那么就会起冲突,这样样的解决方式就是使用注解方式,@Alias("user"),使用的前提是得引入mybatis库文件并设置环境变量:

        <typeAliases>
		<typeAlias type="com.example.mybatis.entity.User" value="u"></typeAlias>
		<package name="com.example.mybatis.enity" />
	</typeAliases>

4.environments

        environments设置开发环境,可以配置多个环境,由单个environment配置环境,在environment中必须有transactionManager和dataSource标签才算完整,environment的id为设置环境的唯一id标签,由environments中的default设置使用哪一种环境,transactionManager中type有两种:JDBC,代表使用jdbc的方式进行事物的提交和回滚;MANAGED代表使用j2ee的方式进行提交和回滚,dataSource为数据源,type为数据源类型:UNPOOLED|POOLED|JNDI,UNPOOLED

    UNPOOLED:该数据源的实现只是在每次请求时打开和关闭连接。虽然速度有点慢,但对于不需要立即可用连接性能的简单应用程序来说,这是一个不错的选择。在这个性能区域中,不同的数据库也有所不同,因此对于某些数据库来说,池和这个配置可能不太重要。

    POOLED: 数据源池JDBC连接对象的实现,以避免创建新连接实例所需的初始连接和身份验证时间。这是并发web应用程序实现最快响应的流行方法。

    JNDI:该数据源的实现是为了与容器(如EJB或应用程序服务器)一起使用,这些容器可以集中配置数据源或外部,并在JNDI上下文中引用它。这个数据源配置只需要两个属性:

5.databaseIdProvider

        dataBaseIdProvider是为全局设置多个数据源,可以设置多个数据库,如mysql,oracle,sql server等数据库,type="DB_VENDOR"就是得到数据库厂商表示来执行不同的sql。

<!-- 多数据库支持 -->
	<databaseIdProvider type="DB_VENDOR">
		<property name="MySQL" value="mysql"></property>
		<property name="Oracle" value="oracle"></property>
		<property name="SQL Server" value="sql server"></property>
	</databaseIdProvider>

使用方法在sql映射文件mapper中设置,在查询标签中设是databaseId="oracle",设置数据库执行的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.example.mybatis.dao.UserMapper">

	<select id="findUserById" parameterType="int"
		resultType="com.example.mybatis.entity.User" databaseId="oracle">
		select id, username, sex from
		t_user where id = #{id}
	</select>
	
	<select id="findUserById" parameterType="int"
		resultType="com.example.mybatis.entity.User" databaseId="mysql">
		select id, username, sex from
		t_user where id = #{id}
	</select>
</mapper>

6.mappers

mappers为将sql映射注册带全局文件当中

<!-- sql映射文件注册 -->
	<mappers>
		<mapper resource="com/example/mybatis/dao/UserMapper.xml"></mapper>
		<mapper class="com.example.mybatis.dao.UserMapperAnnotaion"></mapper>
	</mappers>

设置方式有三种:

    resource :引入java包中的sql映射文件mapper.xml;

    class:直接引用接口,指向接口,在接口中使用注解的方式操作

 public interface UserMapperAnnotaion {
	@Select("select id, username, sex from t_user where id = #{id}")
	public User findUserById();
}

    url:映入网络路径和磁盘路径下的的xml文件;

博主初学MyBatis,就什么错误的地方还请指出,望谅解。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值