【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西:
配置内容 | 作用 |
---|---|
<properties>
|
用来加载属性文件 |
<settings>
|
用来设置全局参数 |
<typeAliases>
|
用来设置类型的别名 |
<typeHandlers>
|
用来设置类型处理器 |
<objectFactory>
|
用来设置对象工厂 |
<plugins>
|
用来设置插件 |
<environments>
|
用来设置mybatis的环境 |
<mappers>
|
用来配置映射文件 |
从前面的博文中可以看出,<environments>
是用来配置mybatis的环境的,在和spring整合前是由mybatis自己管理的,但是和Spring整合后,这些配置都将被废弃掉,<environments>
部分在前面已经有提到过,这里就不再赘述了。然后objectFactory和plugins一般我们不用,所以在这里就不总结了,<typeHandlers>
类型处理器是mybatis中用来完成jdbc类型和Java类型之间转换的,mybatis默认支持的类型处理器基本够我们使用了,一般不需要自定义。这篇博文主要来总结一下剩下的几个配置的用法。
1. properties加载属性文件
我们之前连接数据库的一些配置都是在<environments>
中写死的,在实际开发中肯定不是这样子的,我们需要将数据库连接参数单独配在db.properties文件中,然后在SqlMapConfig.xml中加载db.properties的属性值即可,这就用到了<properties>
了。即:
<properties resource="db.properties">
然后environment中做一下对应的修改即可:
在<properties>
内部还可以定义属性值:<property name="" value=""/>
,在property中定义的属性也可以被<evironments>
中来加载,这就涉及到了mybatis加载属性的顺序了:
- 在
<properties>
元素体内定义的首先被读取 - 然后读取
<properties>
元素中resource或者url加载的属性,它会覆盖已读取的同名属性 - 最后读取parameterType传递的属性(使用${}这种方式,不是#{}这种方式),它会覆盖已读的同名属性
建议:从上面可以看出来,如果在<properties>
中定义属性的话,有点乱,搞不好就会出错,所以开发中不要在<properties>
元素体内添加任何属性值,只将属性值定义在properties文件中。另外在properties文件中定义的属性名要有一定的特殊性,如xxx.xxx,这样不容易和其他的一些属性值起冲突。
2. settings全局参数配置
mybatis框架在运行时可以调整一些运行参数,比如:开启二级缓存、开启延迟加载等,有个settings全局参数配置文档:
这些全局参数的配置会影响mybatis的运行行为,需要的时候再设置,不需要的时候不能乱设置,这里就不做详细介绍了,等后面用到的时候我再针对相应的做一下介绍。说实在的,这么多我也懒得去看……
3. typeAliases类型别名
这是配置中的一个重点,我们知道,在mapper.xml中定义了很多的statement,statement需要parameterType来指定输入参数的类型、需要resultType来指定输出结果的类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>
来定义,方便开发。
mybatis有默认支持的一些别名,一般基本类型都有别名,如下:
但是针对pojo的需要我们自定义别名了,比如我们将自己定义的User对象取个别名为user,如下:
<!-- 别名的定义 --> <typeAliases><!-- 针对单个别名的定义。type:类型的路径; alias:别名 --> <typeAlias type="mybatis.po.User" alias="user"/> </typeAliases>
然后输入参数或者输出结果为mybatis.po.User时,就可以用user来代替了,如下:
但是问题来了,如果工程中有很多pojo,那岂不是完蛋……这得定义多少个啊,所以mybatis帮我们解决了这个问题,它提供了批量别名的定义,如下:
<!-- 批量别名定义(这个常用) 指定一个包名,mybatis会自动的扫描包中po类,自动定义别名,别名就是类名(首字母大写或小写都可以) --> <package name="mybatis.po"/>
这就爽了,如果进行了上面这样设置,那么所有放在mybatis.po包下的pojo都可以不用定义了,直接使用类名就可以了,所以我们直接使用user即可。毫无疑问,开发中肯定使用这个批量的别名定义。
3. mappers映射配置
在前面的几篇博文中可以看到,<mappers>
标签是通过resource方法加载单个映射文件的,即:
<mappers><mapper resource="sqlmap/User.xml" /><mapper resource="mapper/UserMapper.xml" /> </mappers>
当然咯,除了resource外,也可以用url来加载,只不过url指定的是绝对路径,硬盘中的路径。这里就不举例了,这里介绍另一种加载映射文件的方式:通过mapper接口来加载。通过mapper接口来加载的话要遵循一个规范:
规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
这个规范的前提是:使用的是mapper代理的方法
所以上面的配置就可以改成
<mappers><mapper resource="sqlmap/User.xml" /><mapper class="mybatis.mapper.UserMapper"/> </mappers>
所以要把原来的UserMapper.xml从config/mapper中的拖到和UserMapper.java一个目录下且同名,如下:
但是还是有个弊端,就跟上面那个别名的配置一样,如果现在有好多个mapper咋整,所以mybatis也给我们提供了批量加载方法:我们只要指定mapper接口的包名,mybatis自动扫描包下面所有的mapper接口进行加载。当然,还是要遵循上面的那个规范。所以我们可以修改上面的配置:
<mappers><mapper resource="sqlmap/User.xml" /><mapper class="mybatis.mapper"/> </mappers>
这样mybatis.mapper包下的所有mapper.xml映射文件都可以加载了,这就更加简洁了。在开发中推荐使用这种批量加载映射文件的方法。
关于SqlMapConfig.xml文件中的配置就总结这么多吧~
转载于:https://www.cnblogs.com/shanheyongmu/p/5849132.html
【MyBatis学习05】SqlMapConfig.xml文件中的配置总结相关推荐
- 请说明一下web.xml文件中可以配置哪些内容?
● 请说明一下web.xml文件中可以配置哪些内容? web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter). Servlet.相关参数.会话超时时间.安全 ...
- java面试(二十五)--(1)redis为什么读写速率快性能好(2)说说web.xml文件中可以配置哪些内容(3)和的区别(4)扑克牌顺子
1. redis为什么读写速率快性能好? 1.Redis将数据存储在内存上,避免了频繁的IO操作 2.Redis其本身采用字典的数据结构,时间复杂度为O(1),且其采用渐进式的扩容手段 3.Redis ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- web.xml文件中可以配置哪些内容?
web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter).Servlet.相关参数. 会话超时时间.错误页面等①配置Spring上下文加载监听器,加载Spri ...
- web.xml 文件中的配置节的加载顺序
为什么80%的码农都做不了架构师?>>> web.xml 文件中一般包括 servlet, filter, listener 等的配置,那么它们是按照一个什么顺序加载呢? 首先 ...
- log4J配置及在web.xml文件中的配置
为什么80%的码农都做不了架构师?>>> web.xml中的相关配置 <!-- webAppRootKey:值缺省为webapp.root,当tomcat下部署多个应用时 ...
- Tomcat在自定义xml文件中配置虚拟目录
在实际开发中,如果,经常在server.xml文件中,配置虚拟目录会有一个弊端 就是,每次修改server.xml文件之后,想要文件生效,必须重新启动Tomcat服务器 为了解决这个问题,可以采用另外 ...
- Spring 在xml文件中配置Bean
Spring容器是一个大工厂,负责创建.管理所有的Bean. Spring容器支持2种格式的配置文件:xml文件.properties文件,最常用的是xml文件. Bean在xml文件中的配置 < ...
- Struts2-关于struts.xml文件的action配置的说明
一.Action的说明: Struts2的核心功能就是action,对于开发者,使用Struct2框架的主要工作就是编写Action类来实现业务.action类可以不用继承任何父类和实现任何接口,但是 ...
最新文章
- 来来来,你可能没见过这么全的实战吧
- #在蓝懿学习iOS的日子#第六个练习日
- linux命令在线查
- 1.18.2.5.Table APISQL(查询表、Table API、SQL、混用Table API和SQL、输出表、翻译与执行查询、Blink planner、Old planner)等
- java 泛型详解-绝对是对泛型方法讲解
- CodeForces - 1327D Infinite Path(图论综合)
- java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制
- 【转载】指导教师的WZ132
- 为什么43%前端开发者想学Vue.js
- 使用U盘引导安装linux
- 高性能的服务器的架设
- VC6++配置汇编环境和第一个简单程序
- Java函数参数传递方式
- EXCEL转PDF方法之使用PDF虚拟打印机生成PDF文件
- 网易回应暴力裁员事件并道歉了!连发两声明:当事人绩效确不合格...刘强东说了这句话,意外上热搜...
- 二阶有源低通滤波器设计
- js实现简单的有序map
- java实现幻方构造
- 计算机科学与技术的心理测试考试,考试中的心理测评是什么?
- proxy代理解决跨域问题
热门文章
- java quartz Scheduler 操作Trigger
- Ansible Privilege Escalation
- 3.2 神经网络表示
- CentOS7添加自定义系统服务
- python中文转拼音不用第三方库_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...
- 15个示例让你搞懂Linux中的cd命令
- 云存储网关 > 常见问题 > 文件网关 > 文件网关的缓存有什么作用
- Kubernetes学习总结(18)—— Kubernetes 容器网络
- Mysql学习总结(65)——项目实战中常用SQL实践总结
- Spring MVC学习总结(12)——Spring MVC集成Swagger时报错{schemaValidationMessages:[