11_关于SqlMapperConfig.xml
【简述】
SqlMapConfig.xml是Mybatis的全局配置文件,配置内容如下:
1.properties---------属性
2.settings-----------全局配置参数
3.typeAliases--------类型别名
4.typeHandlers------类型处理器
5.objectFactory-----对象工厂
6.plugins------------插件
7.environments-----环境集合属性对象
environments ---------环境子属性对象
transactionManager----------事务管理
dataSource-------------------数据源
8.mappers ---------映射器
(1)properties属性
需求:
将数据库中的连接参数单独配置在db.properties中,只需要在sqlMapConfig.xml中加载该db.properties配置文件。
在sqlMapConfig.xml中就不需要对数据库连接参数硬编码。
配置在db.properties中的优点:方便对参数进行统一的管理,其他的xml文件可以引用该db.properties
原先的【sqlMapConfig.xml】数据库相关的配置如下:
修改之后的【sqlMapConfig.xml】如下,注意不要忘了<properties resource="db.properties"></properties>
修改之后 在【db.properties】配置文件内容如下
【MyBatis加载属性的顺序】
1.在properties元素体内定的属性首先被加载。
2.然后会读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性(所以命名要注意)
3.最后会读取parameterType传递的属性,它会覆盖已读取的同名属性。
【注意】
不要在<properties>元素体内添加任何属性值,只将属性值定义在db.properties文件中。
在db.properties文件中定义属性文件名要有一定的特殊性,例如jdbc.xxx.xxx
(2)settings全局参数配置
MyBatis框架在运行时可以调整一些运行参数
比如:开启二级缓存、开启延迟加载。。。。
(3)typeAliases(别名)(学习重点!)
需求:
在mapper.xml中,定义了很多的statement
【默认的一些别名的源码】
registerAlias("string", String.class);
registerAlias("byte", Byte.class);
registerAlias("long", Long.class);
registerAlias("short", Short.class);
registerAlias("int", Integer.class);
registerAlias("integer", Integer.class); //可以发现,parameter="int"或者parameterType="integer"最后都会指向Integer
registerAlias("double", Double.class);
registerAlias("float", Float.class);
registerAlias("boolean", Boolean.class);
registerAlias("byte[]", Byte[].class);
registerAlias("long[]", Long[].class);
registerAlias("short[]", Short[].class);
registerAlias("int[]", Integer[].class);
registerAlias("integer[]", Integer[].class);
registerAlias("double[]", Double[].class);
registerAlias("float[]", Float[].class);
registerAlias("boolean[]", Boolean[].class);
registerAlias("_byte", byte.class);
registerAlias("_long", long.class);
registerAlias("_short", short.class);
registerAlias("_int", int.class);
registerAlias("_integer", int.class);
registerAlias("_double", double.class);
registerAlias("_float", float.class);
registerAlias("_boolean", boolean.class);
registerAlias("_byte[]", byte[].class);
registerAlias("_long[]", long[].class);
registerAlias("_short[]", short[].class);
registerAlias("_int[]", int[].class);
registerAlias("_integer[]", int[].class);
registerAlias("_double[]", double[].class);
registerAlias("_float[]", float[].class);
registerAlias("_boolean[]", boolean[].class);
registerAlias("date", Date.class);
registerAlias("decimal", BigDecimal.class);
registerAlias("bigdecimal", BigDecimal.class);
registerAlias("biginteger", BigInteger.class);
registerAlias("object", Object.class);
registerAlias("date[]", Date[].class);
registerAlias("decimal[]", BigDecimal[].class);
registerAlias("bigdecimal[]", BigDecimal[].class);
registerAlias("biginteger[]", BigInteger[].class);
registerAlias("object[]", Object[].class);
registerAlias("map", Map.class);
registerAlias("hashmap", HashMap.class);
registerAlias("list", List.class);
registerAlias("arraylist", ArrayList.class);
registerAlias("collection", Collection.class);
registerAlias("iterator", Iterator.class);
registerAlias("ResultSet", ResultSet.class);
【针对自己定义的pojo类型的别名】
在【sqlMapper.xml中】,针对单个别名的定义
在【sqlMapper.xml中】,针对批量别名的定义(批量的方式较为常用)
指定包名,MyBatis自动扫描包中的pojo类,自动定义别名,别名就是类名(首字母大小写均可)
(4)typeHandlers(类型处理器)
MyBatis中通过typeHandlers完成jdbc类型和java类型的转换。
通常情况下,mybatis提供的类型处理器满足日常需求,无需自定义。
(5)mappers(映射配置)
1.例子【sqlMapConfig.xml】中通过resource加载单个映射文件的方式:
2.通过mapper接口加载单个映射文件
需要遵循一些规范:需要将XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一个目录中。
上边的规范前提:使用mapper代理方法
3.批量加载
批量加载mapper接口的包名。myBatis自动扫描包下边的所有的mapper接口进行加载
遵循的规范:需要将XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一个目录中。
上边的规范前提:使用mapper代理方法
11_关于SqlMapperConfig.xml的更多相关文章
- Mybatis学习4——核心文件sqlMapperConfig.xml属性
1.外部文件jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis ...
- 基于SSM的租赁管理系统1.0_20161225_框架搭建
搭建SSM底层框架 1. 利用mybatis反向工程generatorSqlmapCustom完成对数据库十表的映射 generatorConfig.xml <?xml version=&quo ...
- 【Mybatis架构】输入、输出映射
前言综述: 其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说: 但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到 ...
- MyBatis之CRUD
1 mybatis框架介绍 1.1回顾jdbc操作数据库的过程 1.2 mybatis开发步骤 A.提供一个SqlMapperConfig.xml(src目录下),该文件主要配置数据库连接,事务,二级 ...
- 10_Mybatis开发Dao方法——mapper代理实现
[工程截图(几个关键的标红框)] [UserMapper.xml] <?xml version="1.0" encoding="UTF-8"?> & ...
- mybatis入门介绍一
首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...
- 框架应用:Mybatis (一) - 入门案例
ORM框架 在实际开发中,工程中本质的任务是从数据库中获取数据,然后对数据进行操作,又或者写入数据.开发时语言是大多是面向对象的工程语言,这个时候就必须进行工程语言和数据库连接语言的转换,也就是所谓的 ...
- mybatis之Mybatis_demo
这篇博文通过简单的CRUD案例,让大家能够快速的上手,使用mybatis. 1,在eclipse中新建java project项目 mybatis_demo 2,在mybatis_demo项目中建 ...
- spring整合mybatis框架
1.导入jar包 2.配置文件 a. applicationContext.xml文件 <beans xmlns="http://www.springframework.org/ ...
随机推荐
- 细说Oracle数据库与操作系统存储管理二三事
在上大学的时候,学习操作系统感觉特别枯燥,都是些条条框框的知识点,感觉和实际应用的关联不大.发现越是工作以后,在工作中越想深入了解,发现操作系统知识越发重要.在实践中结合理论还是不错的一种学习方法.自 ...
- python 语句,条件,循环
#coding:utf-8__author__ = 'Administrator'#想要在同一行打印,print后面加','print 12,print 34'''从模块导入函数import some ...
- C# ip hash算法实现ip分流
private void button42_Click(object sender, EventArgs e) { Dictionary<int, string> proxyIpNodes ...
- iOS 检测网络状态
一般有两种方式,都是第三方的框架,轮子嘛,能用就先用着,后面再优化. 一:Reachability 1.首先在AppDelegate.h添加头文件"Reachability.h", ...
- PHP操作SQLITE
一直以来.我们操作SQLITE,都是基于PHP默认的SQLITE操作模块. 今天介绍一个能够操作SQLITE2,和SQLITE3的PHP类,此为我封装的. <? php abstract cla ...
- 机房收费系统(VB.NET)——存储过程实战
最初接触存储过程是在耿建玲老师的视频里,当初仅仅是草草过了一遍.仅仅是有了个印象.知道了这个名词:大二时也有SqlServer数据库这门课,只是老师没讲,自己也没看:真正对存储过程的了解来自于自学考试 ...
- SqlBulkCopy高效能批量插入SQL SERVER
what SqlBulkCopy是.NET提供的用来批量插入数据的一个类,特别是将内存中的数据一次性插入到数据库,目前只能插入到SQL SERVER数据库,数据源可以是DataTable.IDataR ...
- select组件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Android(java)学习笔记166:Java中输入和输出流概念
程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,当然是输入流了, 反之,把内存中的数据写到磁盘上的文件里面去就是输出.通常都是这样的,用了过滤流的情况复杂一些,则另当别论.
- C#多线程编程(1):线程的启动
转:http://blog.csdn.net/zhoufoxcn/article/details/4402999 在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来 ...