Mybatis的全局配置文件标签介绍(mybatis-config.xml)
全局配置文件中本人只记录了常用的几个
typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, databaseIdProvider
这几个只是作为了解,没做记录
mybatis-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> <!--
1:mybatis可以用properties引入外部properties文件内容
resource:引入的是项目的类路径,即项目中的文件
url:引入的是网络路径或者是磁盘路径
-->
<properties resource="dbconfig.properties"></properties> <!--
2:settings标签含有很多重要的设置项
setting用来设置每一个设置项
name:设置项名
value:设置项值
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings> <!--
3:typeAliases别名处理器,可以为我们的java类型起别名(别名不区分大小写,也就是即使你制定了别名无论大小写,只要字母对的上就可以)
1)typeAlias为指定java类型起别名,
type:被指定的java类型全类名,默认别名是类名的小写(employee,此时mapper文件中用到的全类名都能写成此别名)
alias:指定全新别名
2)package为某包下以及该子包下的所有类起别名(默认别名是类名的小写)
name:指定包的全路径
3)当批量起别名的时候,若子包中有类名与父包中类名相同时,会发生冲突报错,
这时可以在冲突的bean文件中添加@Alias标签来制定冲突类别名;
-->
<typeAliases>
<typeAlias type="com.yinfu.mybatis.beans.Employee"/>
<!-- <package name="com.yinfu.mybatis.beans"/> -->
</typeAliases> <!--
4:environments环境配置 mybatis可以配置多种环境 default指定使用某种环境,他的值对应的是环境的id
environment配置一个具体的环境信息,(必须包含俩标签),id代表当前环境的唯一标识
transactionManager:事务管理器
type:事务管理器的类型两种:JDBC(JdbcTransactionFactory事务管理器)|MANAGED(ManagedTransactionFactory事务管理器),
dataSource:数据源
type:数据源类型
-->
<environments default="development">
<environment id="development">
<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> <!--
5:databaseIdProvider用来设置多数据库厂商(mysql,oracle,sqlServer等)
当配置环境中有其他数据库的链接配置,并且default来切换查询环境(用的那个数据库),
并且mapper文件中有对SQL语句指定查询环境的属性,这样mybatis可移植性大大增强
-->
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同数据库厂商指定别名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider> <!-- 寫好的的SQL映射文件(mapper文件)一定要注册到mybatis-config.xml中 -->
<!--
6:mappers:将SQL映射(mapper文件或mapper接口)注册到全局映射中(mybatis-config.xml)
[1]mapper:注册指定的sql映射
1)配置文件(mapper.xml文件)注册
resource:引入的是项目的类路径,即项目中的文件
url:引入的是网络路径或者是磁盘路径
2)接口注册
class:接口名全路径
①有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件要在同一目录下;
②没有SQL映射文件,利用注解将SQL语句写在接口中对应的方法上(@Select @Delete等)
推荐:比较重要的Dao接口用SQL映射文件的方式,不太重要的可以用注解的方式,但是注解修改了源代码;
[2]package:批量注册
name:包的全路径名称;
有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件一定要在同一包下 -->
<mappers>
<mapper resource="com/yinfu/mybatis/dao/EmployeeMapper.xml"/>
</mappers>
</configuration>
对应的mapper映射文件:
<?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">
<!-- 接口式编程,namespace对应的是接口的全类名 -->
<mapper namespace="com.yinfu.mybatis.dao.EmployeeMapper">
<!--
接口式编程,id对应的是接口中的方法名
databaseId是在mybatis-config.xml中databaseIdProvider标签中定义的
即:这条SQL语句是运行在哪个数据库环境下的(mysql,oracle,sql severd等)
此时程序是运行在mysql环境下的,指定了mysql数据库名的和没指定名称的都会执行,如果mapper文件
存在两个相同id方法名的 两条SQL语句,mybatis会自动舍弃没指定数据库名的那条;
-->
<select id="getObjById" resultType="employee" databaseId="mysql(数据库类型的别名)">
select * from tbl_employee where id = #{id}
</select>
</mapper>
对应的mapper接口:
package com.yinfu.mybatis.dao;
import com.yinfu.mybatis.beans.Employee;
public interface EmployeeMapper {
/**
*
* 还有一种注解式mapper,没有对应的mapper.xml文件,而是将SQL语句写在了注解里
* 例:
* @Select("select * from tbl_employee where id = #{id}")
* public Employee getObjById(Integer id);
*
* @param id
* @return
*/
public Employee getObjById(Integer id);
}
Mybatis的全局配置文件标签介绍(mybatis-config.xml)的更多相关文章
- MyBatis全局配置文件标签详解
一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...
- 由浅入深---MyBatis的全局配置文件
从我开始接触代码,我就很怕写配置文件,一般的配置文件我都是直接从上一个项目复制到这个项目来改改,可能有部分同学也有我这种痛吧: 我目前一般的做法,先去找找例子(从网上,从github,从官网)之后再改 ...
- Mybatis(二) 全局配置文件详解
这节来说说全局配置文件的东西,非常简单.看一遍就懂了. --WH 一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.prop ...
- MyBatis(2)-全局配置文件
本文的代码是在MyBatis(1)-简单入门基础之上进行学习的,如有不懂请先看此博文MyBatis(1)-简单入门! 1)配置文件的安装 --->在联网的情况下,点击去下载http://myba ...
- Mybatis笔记五:Mybatis的全局配置文件Configuration.xml讲解
从 XML 中构建 SqlSessionFactory 每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心.SqlSessionFactory实例可以由SqlSessio ...
- SqlMapConfig.xml全局配置文件解析(mybatis)
原文 http://www.cnblogs.com/selene/p/4607004.html 一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) set ...
- [mybatis]Example的用法 标签: mybatis 2017-05-21 21:46 651人阅读 评论(11)
Example类是什么? Example类指定如何构建一个动态的where子句. 表中的每个non-BLOB列可以被包括在where子句中. 例子是展示此类用法的最好方式. Example类可以用来生 ...
- _MyBatis3-topic06.07.08.09_ 全局配置文件_引入dtd约束(xml提示)/ 引入properties引用/ 配置驼峰命名自动匹配 /typeAliases起别名.批量起别名
MyBatis3 的全局配置文件 : Setting -官方文档 笔记要点 出错分析 [Intellij idea配置外部DTD文件] 设置步骤: (同Eclipse中的Catalog设置 ) Fil ...
- 3.Struts2配置文件标签介绍
Struts2的很多核心功能都是由拦截器实现的. struts-default.xml中定义了这些拦截器与Result类型. 所以,不继承struts-default包,Struts2提供的很多核心功 ...
随机推荐
- ArcGIS中Shapefile和Geodatabase坐标容差的问题
转自原文 ArcGIS中Shapefile和Geodatabase坐标容差的问题 ArcGIS中,Shapefile文件是没有容差设置的,所以无论什么单位的坐标写入shapefile文件,都不存在容差 ...
- 删除,“windows setup 启用EMS”
方案1[笔者推荐]:进入Windows后按Windows+R输入msconfig回车进入系统配置,切换到引导,点击你要删除的选项然后点击删除就行[1].
- FreeFileSync同步定时执行
Schedule a Batch Job Create a new batch job via FreeFileSync's main dialog: Menu → File → Save as a ...
- Java编程50题
[程序1] 题目:古典问题:有一对兔子.从出生后第3个月起每一个月都生一对兔子,小兔子长到第三个月后每一个月又生一对兔子,假如兔子都不死.问每一个月的兔子总数为多少? //这是一个菲波拉契 ...
- Structual设计--Bridge模式
1.意图 将抽象部分与它的实现部分分离.使他们都能够独立地变化. 2.别名 Handle/Body 3.动机 当一个抽象对象可能有多个实现时,通经常使用继承来协调它们.抽象类定义对该抽象的接口.而详细 ...
- 【Mongodb教程 第一课 补加课1 】windows7 下安装mongodb 开启关闭服务
mongodb在2.2版本开始就不支持windows xp了(我想现在用xp的应该也是带着情怀的一部分人吧,我只是一个工匠而已),windows下server8 R2,64位,32位,只是32位只支持 ...
- Lnixu Bash
一.简单命令 1.创建文件(vi) vi hellowold.txt2.创建目录(mkdir) mkdir linux_bash3.删除文件(rm) rm helloworld.txt4.复制文件(c ...
- Receiver type ‘X’ for instance message is a forward declaration
这往往是引用的问题. ARC要求完整的前向引用,也就是说在MRC时代可能仅仅须要在.h中申明@class就能够,可是在ARC中假设调用某个子类中未覆盖的父类中的方法的话.必须对父类.h引用,否则无法编 ...
- [英语学习]王秒同学《21天TED英语精练团》
第一个分享: Chris Anderson的TED's secret to great public speaking(英音). There's no single formula for a gre ...
- 2016/3/27 PHP中include和require的区别详解
1.概要 require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估:而对于require()来说, ...