Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)
Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)
此章主要介绍sqlMapConfiguragion.xml的核心配置属性。
mybatis、mappers、Environments、ObjectFactory、typeHandlers、Properties、Settings、typeAliases、Plugins
原链接为:https://blog.csdn.net/www1056481167/article/details/70551663
mybatis核心

MyBatis的xml配置文件包含了设置和影响MyBatis行为的属性,XML配置文件的层次饥结构如下:
Configuration
Properties属性
Settings设置
typeAliases类型别名
typeHandlers类型处理器
ObjectFactory对象工厂
Plugins插件
Environments环境
Environment环境变量
transactionManager事物管理器
datasource数据源
mappers映射器
基本配置项:
- <?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>
- …其他配置项
- </configuration>
注意:
MyBatis 将按照下面的顺序来加载属性:
在 properties素体内定义的属性首先被读取。
然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
建议:
不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX
Properties属性
作用:这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递
- <properties resource="db.properties">
- <!--properties中还可以配置一些属性名和属性值 -->
- <property name="jdbc.driver" value=""/>
- </properties>
Settings的设置
mybatis框架在运行时可以调整一些运行参数。
settings是极其重要的配置, 它们会修改 MyBatis 在运行时的行为方式。
| 设置选项 | 描述 | 可用值 | 默认值 | |
| cacheEnabled |
全局性地启用或禁用所有在 mapper配 置文件 |
true|false | true | |
| lazyLoadingEnabled |
全局性地启用或禁用延迟加载。当禁用 |
true|false | true | |
| aggressiveLazyLoading |
当启用后,一个有延迟加载属性的对象的任何一个延迟属性被加载时,该对象 的所有的属性都会被加载。否则,所有 属性都是按需加载。 |
true|false | true | |
| multipleResultSetsEnabled | 允许或禁止从单一的语句返回多个结果 集(需要驱动程序兼容)。 | true|false | true | |
| useColumnLabel |
|
true|false | true | |
| useGeneratedKeys |
允许JDBC自动生成主键。需要驱动程序兼容。如果设置为 true则会强行自 动生成主键,然而有些则不会自动生 |
true|false | False | |
| autoMappingBehavior |
指定MyBatis是否以及如何自动将列映射到字段/属性。 PARTIAL:只是自动映射简单、非嵌套的结果集。 |
NONE,PARTIAL, FULL |
PARTIAL | |
| defaultExecutorType |
配置默认的执行器(executor)。SIMPLE:简单的执行器。 REUSE:重用preparedstatements的执行器。 |
SIMPLEREUSE BATCH |
SIMPLE | |
| defaultStatementTimeout | 设置查询数据库超时时间。 | 任何正整数 |
|
注:一般情况下我们不需要特别指定,都使用的是默认值除非特殊需要自己指定状态值。
具体配置如下
- <configuration>
- <settings>
- <setting name="cacheEnabled" value="true"/>
- </settings>
- </configuration>
typeAliases类型别名
定义类型别名的意义以及用途:
在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。例如查询结果返回的是一个user对象,此处可以定义一个user bean,然后入参或者返回参数可以指定为alias的定义的别名user即可。
1、单个定义别名
- <configuration>
- <typeAliases>
- <!-- 针对单个别名定义 type:类型的路径 alias:别名 -->
- <typeAlias type="org.mybatis.po.User" alias="user"/>
- </typeAliases>
- </configuration>
2、批量定义别名(常用)
- <configuration>
- <typeAliases>
- <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
- <package name="org.mybatis.po" />
- </typeAliases>
- </configuration>
typeHandlers类型处理器
说明:mybatis中通过typeHandlers完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义mybatis支持类型处理器
ObjectFactory对象工厂
MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下,我们不需要配置,mybatis会调用默认实现的objectFactory。除非我们要自定义ObjectFactory的实现,那么我们才需要去手动配置。
- // ExampleObjectFactory.java
- public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) {
- return super.create(type);
- }
- public Object create(
- Class type,
- List<Class> constructorArgTypes, List<Object> constructorArgs) {
- return super.create(type, constructorArgTypes, constructorArgs);
- }
- public void setProperties(Properties properties) { super.setProperties(properties);
- }
- }
// MapperConfig.xml
- <objectFactory type="org.mybatis.example.ExampleObjectFactory">
- <property name="someProperty" value="100"/>
- </objectFactory>
ObjectFactory接口非常简单,它包含两个create的方法,一个是默认构造器,还有一个是含参数的构造器。最后的setProperties方法用来配置ObjectFactory。在初始化您自己的ObjectFactory实例之后,定义在objectFactory元素主体中的属性会以参数的形式传递给setProperties方法。
Plugins插件
plugins是一个可选配置。mybatis中的plugin其实就是个interceptor,它可以拦截Executor、ParameterHandler、ResultSetHandler、StatementHandler的部分方法,处理我们自己的逻辑。Executor就是真正执行sql语句的东西, ParameterHandler是处理我们传入参数的,还记得前面讲TypeHandler的时候提到过,mybatis默认帮我们实现了不少的typeHandler,当我们不显示配置typeHandler的时候,mybatis会根据参数类型自动选择合适的typeHandler执行,其实就是ParameterHandler在选择。ResultSetHandler就是处理返回结果的。
Environments环境
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC" />
- <!-- 配置数据库连接信息 -->
- <dataSource type="POOLED">
- <!-- value属性值引用db.properties配置文件中配置的值 -->
- <property name="driver" value="${driver}" />
- <property name="url" value="${url}" />
- <property name="username" value="${name}" />
- <property name="password" value="${password}" />
- </dataSource>
- </environment>
- </environments>
mapper映射器
第一种加载方式:通过resource加载单个映射文件
xml配置
- <configuration>
- <mappers>
- <mapper resource="sqlmap/User.xml" />
- </mappers>
- </configuration>
第二种加载方式:通过mapper接口加载单个mapper
特别注意的是:通过mapper接口加载单个映射文件
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
上边规范的前提是:使用的是mapper代理方法
配置文件
- <configuration>
- <mappers>
- <mapper class="org.mybatis.mapper.UserMapper"/>
- </mappers>
- </configuration>
第三种加载方式:批量加载mapper(推荐使用)
批量加载mapper指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
上边规范的前提是:使用的是mapper代理方法
- <configuration>
- <mappers>
- <package name="cn.itcast.mybatis.mapper" />
- </mappers>
- </configuration>
mybatis默认支持别名
sql映射XML文件
MyBatis真正强大之处就在这些映射语句,也就是它的魔力所在。对于它的强大功能,SQL映射文件的配置却非常简单
• cache–在特定的命名空间配置缓存。
• cache-ref –引用另外一个命名空间配置的缓存.
• resultMap – 最复杂也是最强大的元素,用来描述如何从数据库结果集里加载对象。
• parameterMap – 不推荐使用! 在旧的版本里使用的映射配置,这个元素在将来可能会被删除,因此不再进行描述。
• sql –能够被其它语句重用的SQL块。
- insert –INSERT映射语句
- update–UPDATE映射语句
- delete –DELEETE映射语句
select –SELECT映射语句 接下来的章节将会对每一个元素进行描述。
Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)的更多相关文章
- mybatis配置报错(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)
如下报错:解决方案:要按照提示的顺序添加属性,(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrappe ...
- The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...
- 【转】The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...
[转]The content of element type "configuration" must match "(properties?,settings?,typ ...
- 掌握Mybatis的核心配置文件
一.配置文件结构 MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和影响MyBatis行为的一些属性. 该配置文件的元素 ...
- The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProv
在mybatis配置文件config.xml中报错: The content of element type "configuration" must match "(p ...
- 元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?
报错主要部分如下: Error building SqlSession.### Cause: org.apache.ibatis.builder.BuilderException: Error cre ...
- mybatis:"configuration" must match "(properties?,settings?,typeAliase.....
在运行mybatis配置文件的时候,出现错误: mybatis:"configuration" must match "(properties?,settings?,ty ...
- 03.MyBatis的核心配置文件SqlMapConfig.xml
SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...
- MyBatis 创建核心配置文件和 SQL 映射文件
Mybatis 的两个配置文件(mybatis-config.xml 和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...
- mybatis基础,mybatis核心配置文件properties元素
peroperties元素 可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递 为dataSource元素配置 <proper ...
随机推荐
- 【转载】【MVC 学习 Razor语法】
Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...
- 开机报错 the connected AC adapter has a lower wattage than the recommended model which was shipped with the system。
机型:联想Thinkpad T410 报错场景:在电脑插上电源充电情况下开机,会自动进入bios setup utility提示你需要重新设置日期时间.date/time 报错提示:The conne ...
- 2、HTTP状态码
HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...
- ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用
早在2010年年底,牛魔王中王在其博客空间牛魔王的作坊中对ArcGIS 10中推出的紧凑型缓存格式进行了详细的解读,详见<ArcGIS 切片缓存紧凑文件格式分析与使用>.紧随着的4年时间里 ...
- Centos离线安装Docker并加入到Swarm管理节点
以root用户登录 加入Swarm前需要在Swarm上生成Token,所以需要提前将Swarm集群搭建完成后,再运行以下命令将各虚机加入到swarm节点 下载docker离线安装包,并拷贝到/root ...
- centos7使用yum安装不了ffmpeg
[root@localhost]# yum install ffmpeg Loaded plugins: fastestmirror Loading mirror speeds from cached ...
- APP自动化测试
CTS工具,主要是基于Androidinstrumentation和JUnit测试原理推单元测试用例: Monkey用来对UI进行压力测试,伪随机的模拟用户的按键输入,触摸屏输入,手势输入等: ASE ...
- Python3获取大量电影信息:调用API
实验室这段时间要采集电影的信息,给出了一个很大的数据集,数据集包含了4000多个电影名,需要我写一个爬虫来爬取电影名对应的电影信息. 其实在实际运作中,根本就不需要爬虫,只需要一点简单的Python基 ...
- SAP GUI里Screen Painter的工作原理
我们在SAP GUI里双击一个screen编号: 单击Layout按钮可以打开Screen Painter: 这背后的工作原理是什么? 是这个RFC destination在起作用: Connecti ...
- UVA 12905 Volume of Revolution (几何,微积分)
题意:分段用椎台面积近似计算体积,然后计算出近似值和真实值的相对误差 微积分加数学. 平头椎台的体积计算公式: V = 1/3*h*(S1+S2*sqrt(S1*S2) 一个更快的计算多项式值的方法: ...