(六)mybatis 全局配置文件讲解
目录
properties (属性)
需求:
将数据库连接参数单独配置在 db.properties
中,只需要在 SqlMapConfig.xm
l 中加载 db.properties
的属性值,在 SqlMapConfig.xml
中不再需要对数据库连接进行 硬编码
;
这里有个小疑问,不在 SqlMapConfig.xml
中对数据库参数进行硬编码,那么在 db.properties
中就不是硬编码了吗?
这个问题的答案是,依然是硬编码,只不过在 db.properties
的数据量很少,方便我们后期去修改,所以硬编码,也无所谓;但是在 SqlMapConfig.xml
中,要是硬编码的话,后期去变动,就要在那么多的信息中进行寻找了。因为,一般修改,都是程序去读取文件进行修改的(比如,集群,几十台机器,在一起,手动去改,多费劲,因此,一般都指使程序去改),所以在 SqlMapConfig.xml
中进行信息的抽取、修改是很费劲的一件事,那么多信息 ;
<!--加载数据库配置文件-->
<!--resource 是通过类路径加载的-->
<!--url 是通过绝对路径加载的-->
<properties resource="xin/ijava/config/db.properties">
<!--properties标签里面,还能配置一些属性名和属性值-->
<property name="" value=""></property>
</properties>
注意:
在 properties 元素体内定义的属性首先被加载 ;
然后会读取 properties 元素中的 resource 或 url 加载的属性,它会覆盖已读取的同名属性 ;
最后读取 parameterType 传递的属性,它会覆盖已读取的同名属性 ;
它们存在优先级
的 ;因此,注意,不要在映射关系中,取的名字,与在上面的三个地方重名了,否则是读取上面的地方的数据的 ;
<select id="findUsersByName" parameterType="java.lang.String" resultType="xin.ijava.pojo.User">
SELECT * FROM User where name LIKE '%${jdbc.url}%'
</select>
[service] 2018-09-05 23:08:14,250 - test.findUsersByName -1818
[main] DEBUG test.findUsersByName - ==>
Preparing: SELECT * FROM User where name LIKE '%jdbc:mysql:///mybatisDay01?charset=utf-8%'
我们可以看到,由于我们在映射关系文件中,使用了和 properties
元素中的 resource
资源加载的 db.properties
文件中的重名 jdbc.url
了,因此,读取了配置文件中的数据,而非我们传进去的参数了 ;
这种情况,发生在拼接 sql
的时候,这是,传进来的参数的优先级是最低的 ;
文件取名字,要有一定的特殊性,比如 xxx.xxx
这样,就很难在映射关系中出现重名 ;
settings 全局参数配置
mybatis
在运行的时候,可以调整一些运行参数。
比如:开启二级缓存、开启延迟加载 ;
需要主要,不能加错了,因为全局参数将影响 mybatis
的运行行为 ;加错了,将导致 mybatis
出现各种问题 ;
需要时再配置 ;
(百度下具体的参数说明)
typeAliases 别名设置
在映射文件中,parameterType
、resultType
的中类型,对于我们开发的 pojo
类,类的全路径名会很长,我们可以设定别名进行简写 ;
<!--别名设置-->
<typeAliases>
<!--单个别名定义-->
<typeAlias type="xin.ijava.pojo.User" alias="user" />
<!--批量别名定义-->
<!--给包名,mybatis 会自动的定义别名,别名就是类的名字,首字母大小写都行-->
<!--多个包,就写多个-->
<package name="xin.ijava.pojo"/>
</typeAliases>
使用别名 user
:
<select id="findUsersByName" parameterType="java.lang.String" resultType="user">
SELECT * FROM User where name LIKE '%${value}%'
</select>
其中,mybatis
中有许多已经定义好的别名,针对 java
中提供的基本类型 ;
typeHandlers 类型处理器
在学 JDBC
的时候,就知道,我们需要将 java
中的类型,转成数据库可以接受的类型 ;比如 String -》 varchar
;
其实我们在写映射文件的时候,就已经进行了转换,比如传进去的是 java
的date
类型,我们是不需要手动转成 sql
的date
的,类型处理器
自己帮我们转换了;不像之前使用 Dbutils
的时候,还需要手动处理一些类型 ;
mybatis
默认有好多的类型处理器,一般这些处理器,就已经满足日常开发的转换需要了 ;
mapper (映射器)
通过
resource
一次加载一个 映射文件<mappers>
<!--地址从src包开始写,用斜杠代替 . -->
<mapper resource="xin/ijava/config/sqlmap/User.xml"/>
<mapper resource="xin/ijava/config/mapper/UserMapper.xml"/>
</mappers>
通过
mapper
接口 一次加载一个 映射文件<!--通过 mapper 接口,一次加载一个映射文件-->
<!--
需要满足一些规范:将接口使用 mapper 代理方法,
然后接口名必须和映射文件名字一样,且在一个包下面
-->
<!--包 用点连接-->
<mapper class="xin.ijava.dao.UserMapper"/>通过
mapper
接口一次加载多个 映射文件 (重点内容)<!--批量加载-->
<!--
需要满足一些规范:将接口使用 mapper 代理方法,
然后接口名必须和映射文件名字一样,且在一个包下面
name 中,写到包名就可,这样包下面的满足条件的 映射文件就会被加载
-->
<package name="xin.ijava.dao"/>
细节
上面的标签在全局配置文件中,进行配置的时候,是有顺序的,比如 settings
是在第二个,那么只能配置在第二个,不能配置在第三个、第四个 ;
(六)mybatis 全局配置文件讲解的更多相关文章
- Mybatis全局配置文件详解(三)
每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心.SqlSessionFactory实例可以由SqlSessionFactoryBuild获得,而SqlSessionF ...
- MyBatis 全局配置文件详解(七)
MyBatis 配置文件作用 MyBatis配置文件包含影响 MyBatis 框架正常使用的功能设置和属性信息.它的作用好比手机里的设置图标,点击这个图标就可以帮助我们查看手机的属性信息和设置功能.其 ...
- Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml
比如针对我这个项目的mybatis全局配置文件SqlMapConfig.xml做一些说明: <?xml version="1.0" encoding="UTF-8& ...
- mybatis全局配置文件
一.properties:引入外部配置文件 1.resource :引入类路径下的全局配置文件,例如:<properties resource="conf/dbconfig.prope ...
- Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——My ...
- MyBatis全局配置文件的各项标签3
mapper 将sql映射注册到全局配置中,这个我们在上一章已经使用过了, resource 这个属性是用来引用类路径下的sql映射文件 url 这个属性是用来引用网络路径或磁盘路径下的sql映射文件 ...
- MyBatis全局配置文件MyBatis-config.xml代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- MyBatis全局配置文件mybatis-config.xml
1.在官方下载的mybatis-3.4.5.zip压缩包中,有我们需要的mybatis核心jar包和mybatis的快速入门的pdf文件 在mybatis的快速入门的pdf文件中,复制如下代码到我们项 ...
- MyBatis全局配置文件标签详解
一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...
随机推荐
- 【概率论】3-7:多变量分布(Multivariate Distributions Part I)
title: [概率论]3-7:多变量分布(Multivariate Distributions Part I) categories: Mathematic Probability keywords ...
- richtextbox Ctrl+V只粘贴纯文本格式
只能粘贴剪切板中的TXT内容 并且 不能改变 剪切板的内容1 当用户按下Ctrl+V屏蔽系统的粘贴功能,然后添加自己的功能2019年12月19日 19:34:38 private void richT ...
- SQLyog Enterprise Trial 试用期问题
SQLyog Enterprise Trial 是 SQLyog的试用版,有效期30天:试用期过后提示购买之后才能使用:解决办法:修改注册表(过期就得改比较麻烦,但暂时可以用,等有时间了再找其他办法) ...
- Postgresql - MATERIALIZED VIEW
MATERIALIZED VIEWPG 9.3 版本之后开始支持物化视图.View 视图:虚拟,不存在实际的数据,在查询视图的时候其实是对视图内的表进行查询操作. 物化视图:实际存在,将数据存成一张表 ...
- linux下docker如何指定容器的工作目录?
答: 启动容器时传入-w <work_dir>参数即可,如: docker run -it -w <work_dir> <container_image_name> ...
- 《maven实战》笔记(4)----maven的仓库
maven的构件表示方式是文件,maven通过仓库来统一管理这些文件. maven仓库的布局方式: 任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径 仓库分为两类:本地仓库和 ...
- [SQL]as的是否可以省略的问题
数据库中as主要作用是起别名,常规来说都可以省略,但是为了增加可读性,不建议省略.
- Linux命令之ntpdate、hwclock
ntpdate用于同步系统时间.hwclock用于同步硬件时间. (1).ntpdate ntpdate [选项] [时间服务器] 一般直接ntpdate [时间服务器] 常用的时间服务器:ntp[1 ...
- SqlDbx连接oracle(可用)
解压SqlDbx.zip,将SqlDbx放到C:盘根目录 1.Path里面增加:C:\SqlDbx Path是为了找tnsnames.ora 2.增加系统变量:ORACLE_HOME,路径:C:\S ...
- 人人都可以写的一个Python可视化小程序,带你走进编程的世界
当年的PHP号称是最好的编程语言,今天的Python就是最简单的编程语言,一个小小的程序,寥寥几行代码,带你体验一下编程的乐趣. 最简单的编程语言 今天要介绍的小工具是Python环境安装好之后,自带 ...