MyBatis中Config.xml 全局配置文件和mapper.xml(SQL映射文件)详解

一、Config.xml 全局配置文件

Config.xml的配置关系到系统的性能,配置时需要配置按照顺序配置,配置顺序应该按照如下顺序

  1. configuration 配置
  2. properties 属性 (配置属性文件的节点url、username、password、driver)
  3. settings 设置
  4. typeAliases 类型命名
  5. typeHandlers 类型处理器
  6. objectFactory 对象工厂
  7. plugins 插件
  8. Environments 环境
  9. mappers 映射器
    一个完整的config.xml如下:
<?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="jdbc/jdbc.properties">
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
		<property name="password" value="666" />
		<property name="username" value="scott"/>
		<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
	</properties>
	
	<typeAliases>
		<typeAlias type="net.neuedu.mybatis.domain.Sutdent" alias="stu"/>
	</typeAliases>
	
	<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="mybatis/mapper/StudentMapper.xml" />
	</mappers>
</configuration>

属性说明:

1.properties全局参数

导入jdbc.properties属性文件 读取属性文件的顺序: 在 properties 元素体内定义的属性首先被读取。 然后会读取resource属性,加载jdbc.properties配置文件中url、username、password、driver,它会覆盖已读取的同名属性。所以最终url、username、password、driver的值是jdbc.properties文件中配置的值。

<properties resource="jdbc/jdbc.properties">
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
		<property name="password" value="666" />
		<property name="username" value="scott"/>
		<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
	</properties>

2. settings全局参数

– mybatis框架在运行时可以调整一些运行参数,比如:开启
二级缓存、开启延迟加载等
– 全局参数将会影响mybatis的运行行为。 – 详细参见MyBatist参考手册

3.typeAliases全局参数

在mapper.xml中,定义的statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,方便开发。

	<typeAliases>
		<typeAlias type="net.neuedu.mybatis.domain.Sutdent" alias="stu"/>
	</typeAliases>

那么在mapper.xml配置文文件中的parameterType属性就可使用 刚刚配置的别名了

<select id="queryStudentById" parameterType="int" resultType="stu">
		select stu_id,stu_name from tab_student where stu_id=#{stu_id}
</select>

如果不配置别名的情况在是这样:
可以看出配置了列别名方便得多。

<select id="queryStudentById" parameterType="int" resultType="net.neuedu.mybatis.domain.Student">
		select stu_id,stu_name from tab_student where stu_id=#{stu_id}
</select>

4.typeHandlers全局参数

mybatis中通过typeHandlers(类型处理器)完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义

5. environments全局参数

environments主要用于配置数据库相关,而且可以在里面配置多个environment。

  • transactionManager
    MyBatis中有两种事务管理器类型
    JDBC:使用了JDBC的提交和回滚设置。
    MANAGED(托管):而它让容器来管理事务的整个生命周期(比如spring、jee应用服务器的上下文)
  • dataSource
    用来配置基本的JDBC数据源连接信息
    有三种内建的数据源类型UNPOOLED(非连接池)、POOLED(连接池)、JNDI,和spring整合后 environments配置将废除

mappers全局参数

既然 MyBatis的行为已经由上述元素配置完了,我们现在就要定义SQL映射语句了。 但是, 首先我们需要告诉MyBatis到哪里去找到这些语句。既然 MyBatis的行为已经由上述元素配置完了,我们现在要定义SQL映射语句了。 但是, 首先我们需要告诉MyBatis到哪里去找到这些语句。

<mappers>
   	<mapper resource="mybatis/mapper/DeptMapper.xml"/> 
</mappers>

– 这些语句简单告诉了MyBatis去哪里找映射文件。其余的细节就是在每个 SQL映射文件中了。

二、mapper.xml(SQL映射文件)

MyBatis 真正强大之处就在这些映射语句,也就是它的魔力所在。SQL映射文件的配置却非常简单对比JDBC 代码使用SQL映射文件配置可以节省95%的代码量。
可以配置的基本元素:

  1. cache – 配置给定模式的缓存
  2. cache-ref – 从别的模式中引用一个缓存
  3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象
  4. sql – 一个可以被其他语句复用的SQL 块
  5. insert – 映射INSERT 语句
  6. update – 映射UPDATE 语句
  7. delete – 映射DELEETE 语句
  8. select - 映射SELECT语句

一下是一个mapper.xml配置文件的例子:

<?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="student">

<!-- queryStudentById(Integer id) -->
	<select id="queryStudentById" parameterType="int" resultType="stu">
		select stu_id,stu_name from tab_student where stu_id=#{stu_id}
	</select>
 	
 	<insert id="addStudent" parameterType="Stu">
 		insert into tab_student (stu_id,stu_name) values(#{stu_id},#{stu_name})
 	</insert>
 	
 	<delete id="deleteStudentById" parameterType="int">
 		delete from tab_student where stu_id=#{stu_id}
 	</delete>
 	
 	<update id="updateStudent" parameterType="Stu">
 			update tab_student set stu_name=#{stu_name} where stu_id=#{stu_id}
 	</update>
 	
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值