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代理方法

时间: 2024-10-18 21:54:53

11_关于SqlMapperConfig.xml的相关文章

mybatis入门(三):mybatis的基础特性

mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高的,不需要程序员写sql, sql语句自动生成了.对sql语句进行优化,修改比较困难. 应用场景: 适用于需求变化不多的中小型项目.比如后台管理,erp,orm,oa.. mybatis:专注于sql本身,需要程序员自己编写sql语句,sql修改,优化比较方便,mybatis是一个不完全的ORM框架

基于SSM的租赁管理系统1.0_20161225_框架搭建

搭建SSM底层框架 1. 利用mybatis反向工程generatorSqlmapCustom完成对数据库十表的映射 generatorConfig.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0/

Mybatis学习记录(三)--Mybatis配置文件详解

关于mybatis的配置文件,主要有两个,一个是SqlMapperConfig.xml文件一个是mapper.xml文件,分别对这两个进行深入全面学习. 一.SqlMapperConfig.xml文件 1.标签概况 在SqlMapperConfig.xml中主要有以下标签,其中环境集合environments和spring整合后废除不用.objectFactory和plugins不经常使用. properties(属性) settings(全局配置参数) typeAliases(类型别名) ty

mybatis与spring的整合

mybatis与spring整合 方式1:通过原始dao方法(不使用代理), 方式2:通过代理方式 搭建运行环境 1)导入 mybatis的jar包--->源码中的核心包+依赖包 mybatis提供的与spring整合的包 spring的核心包+事务包+aop面向切面编程包+数据库jdbc包 数据库驱动+c3p0包 2)建立配置文件 包括spring的核心文件bean.xml 以及 mybatis的核心文件sqlMapConfig.xml 2.User public class User { p

SpringMVC+MyBatis项目总结(一)

环境Spring3.2+Mybatis 3.2.7,JDK 1.6,开发工具Myeclipse 2014 GA Pro,数据库MySQL 5.5(数据采用之前Oracle的,直接用Navicat从Oracle导入到Mysql,然后改了一下数据类型,主键自增) Mapper和实体部分使用Mybatis Generator生成(取消了Example),然后按照传智播客教程上面的做法,每个实体都谢了扩展实体,需要分页的和需要条件查询的都写了Vo类,基础Mapper的ResultMap类型基本都是对应的

002杰信-陌生的maven-web项目整改成我们熟悉的Web架构;classpath的含义;ssm框架的整合;junit测试

这篇博客的资源来源于创智播客,先在此申明.这篇博客的出发点是jk项目,传智的做法是Maven的web模板生成的,但是这样子的结构目录与我们熟知的Web项目的结构目录相差很大,所以要按照我们熟知的项目结构来.这篇文章涉及到的最重要的是:1.加载各种配置文件时经常涉及到classpath,这个东西,要搞搞清楚,在web项目代表的是什么( WEB-INF文件夹下的classes目录).2.还有就是做一个项目时,建包的目录,3.用junit去测试框架的整合. 传智的做法是Maven的web模板生成的:

2016.6.25 Mybatis 框架(十三) 前十二 章总结

mybatis是什么? mybatis是一个持久层框架,是一个不完全的ORM框架,sql语句需要程序员自己去写 mybatis也有映射(输入参数映射.输出结果映射) mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上, 对sql语句优化非常方便,适用于需求变化较多的项目,比如互联网项目 mybatis框架执行过程 1. 配置mybatis的配置文件,sqlMapConfig.xml(名称固定不变) 2. 通过配置文件,加载mybatis运行环境,创建SqlSessionFac

10_Mybatis开发Dao方法——mapper代理实现

[工程截图(几个关键的标红框)] [UserMapper.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=&

Mybatis学习记录(四)--高级查询和缓存

这些都是连贯的学习笔记,所以有的地方因为之前都说过,所以也就没怎么写详细了,看不太明白的可以看看之前的笔记. 一.高级查询 高级查询主要是一对一查询,一对多查询,多对多查询 1.一对一查询 有用户和订单两个表,用户对订单是1对1查询.也就是订单中有一个外键是指向用户的. 先创建实体类: User.java public class User { private int id; private String username; private String password; private St