本次主要来了解:

MyBatis数据库配置文件SqlMapConfig.xml

SQL映射配置中输入映射的配置

SQL映射配置中输出映射的配置

SQL映射配置中动态SQL语句的配置

1. SqlMapConfig配置文件详解

主要来配置MyBatis的一些核心信息。

配置名称

配置含义

配置简介

configuration

包裹所有配置标签

整个配置文件的顶级标签

properties

属性

该标签可以引入外部配置的属性,也可以自己配置。该配置标签所在的同一个配置文件中的其他配置均可引用次配置中的属性

setting

全局配置参数

用来配置一些改变运行时行为的信息。例如是否使用缓存机制,是否使用延迟加载,是否使用错误处理机制等。并且可以设置最大并发请求数量、最大并发事务数量,以及是否启用命名空间等。

typeAliases

类型别名

用来设置一些别名来替代Java的长类型声明(如: java.lang.int变为int),减少配置编码的冗余

typeHandlers

类型处理器

将SQL中返回的数据库类型转换为相应的Java类型的处理器配置

objectFactory

对象工厂

实例化目标类的工厂类配置

plugins

插件

可以通过插件修改MyBatis的核心行为,例如对语句执行的某一点进行拦截调用

environments

环境集合属性对象

数据库环境配置的详细配置

environment

环境子属性对象

数据库环境的配置信息

transactionManager

事务管理

指定MyBatis的事务管理器

dataSource

数据源

使用其中的type指定数据源的连接类型,在标签对中可以使用property属性指定数据库连接池的其他信息

mappers

映射器

配置SQL映射文件的位置,告知MyBatis去哪里加载SQL映射配置

关于SqlMapConfig.xml各个配置名称的详细说明请访问

:MyBatis配置文件详解

2. Mapper映射文件

Mapper映射文件,主要就是用来配置SQL映射语句的,根据不同的SQL语句性质,要使用不同的标签来包裹。

Mapper配置文件标签:

标签名称

标签作用

insert

用来映射插入语句

update

用来映射更新语句

delete

用来映射删除语句

select

用来映射查询语句

resultMap

用来将从数据库结果集取出的数据映射到相应的实体对象的相应字段中

sql

配置可以被其他语句引用的SQL语句块

cache

给定命名空间的缓存配置

cache-ref

其他命名空间缓存配置的引用

parameterMap

参数映射,该配置现已被抛弃

select、insert、delete、update样例:

SELECT * FROM USER WHERE id=#{id}

SELECT * FROM USER WHERE username LIKE '%${value}'

INSERT INTO USER(username, password, gender, birthday, email, province, city)

VALUE (#{username}, #{password}, #{gender}, #{birthday,jdbcType=DATE}, #{email}, #{province}, #{city})

DELETE FROM USER WHERE id=#{id}

UPDATE USER SET username=#{username} where id=#{id}

关于mapper.xml各个配置文件的详细说明请访问

:Mapper XML文件详解

3. Mapper配置动态SQL语句

在Mapper配置文件中,有时候需要根据一些查询条件来选择不同的SQL语句,或者将一些使用频率极高的SQL语句单独配置,在需要的地方引用。MyBatis提供了一种可以根据条件动态配置SQL语句,以及单独配置SQL语句块的机制。

当查询语句的查询条件由于输入参数的不同而无法确切定义时,可以使用“”标签对来包裹需要动态指定的SQL查询条件,而在“”标签对中,可以使用“”条件来分情况设置SQL查询条件。

下面的样例设置了,当输入参数的Java包装类中含有的条件不同时,查询条件可动态变化:

SELECT * FROM USER

AND user.gender = #{UserQueryVo.gender}

AND user.username LIKE '%${UserQueryVo.username}%'

上面的输入参数为封装了查询条件的包装类,在查询条件中使用了动态配置,当性别gender、username不为空时,将其作为查询条件之一,若其中一个为空,不将其作为查询条件。值得注意的是,当使用“”标签对包裹if条件语句时,将会忽略查询条件中的第一个“and”(这样才能组成一个可执行的SQL语句)。

另外,可以将复用性比较强的SQL语句封装成SQL片段,在需要使用该SQl片段的映射配置中声明一下,即可引入该SQL语句。声明如下:

其中id是SQL片段的唯一标识,是不可重复的。SQL片段支持动态SQL语句,但不支持“”标签。

下面示例将上面的SQL语句的查询条件封装为一个“SQL片段”,然后可供所有的SQL映射配置使用:

SELECT * FROM USER

SELECT COUNT(*) FROM USER

这里的标签还可以引用外部mapper.xml文件的SQL片段,refid只需写成该文件的namespace.sql_id (如:test.query_user_where)

语句包含多个查询信息情况(如查询id为2、4、6的User用户)

SELECT * FROM USER WHERE id=2 OR id=4 OR id=6

SELECT * FROM USER WHERE id IN (2,4,6)

而此时如果在Mapper文件中配置这样的语句,则需要向SQL配置传递一个数组或者List类型的输入参数,然后MyBatis使用“”标签去遍历并解析这些数组或List中的值。

示例:

首先输入参数是一个Java包装类,其属性为一个包含多个id信息的List集合:

pubic class UserQueryVo{

//多个id

private List ids;

public List getIds(){

return ids;

}

public void setIds(List ids){

this.ids = ids;

}

}

在Mapper中配置一个包含foreach查询条件的动态SQL片段,并在查询SQL映射中引入它:

id=#{user_id}

SELECT * FROM USER

上面示例使用foreach遍历传入的ids查询参数,在foreach标签中:

collection指定输入对象中的集合属性;

item为每次遍历生成的对象名;

open为开始遍历时要拼接的串;

close为结束遍历时要拼接的串;

separator为遍历的两个对象中间需要拼接的串。

上面示例拼出的效果为:“where (id=2 or id=4 or id=6)”

当然,实现“where id in (2,4,6)” 效果的配置与此类似,只要将拼接前缀open属性改成“and id in(”,separator改为“,”,标签对中的标签改为“#{user_id}”,即可:

#{user_id}

注: 在SQL片段里的“and”用来拼接已有一个或多个查询条件的语句,当此语句为第一个查询条件是,会因为“”的存在而屏蔽第一个“and”。

mybatis mysql 配置文件_Mybatis配置文件详解(4)相关推荐

  1. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  2. Mybatis Generator配置文件完整配置详解

    完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User Guide了 可以搭配着mybatis generator的中文文档看:http://mbg ...

  3. mysql配置文件my.cnf详解

    mysql配置文件my.cnf详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = ...

  4. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可 ...

  5. 05全局配置文件application.properties详解

    Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来.当然,用户也可以 ...

  6. GitLab CI流水线配置文件.gitlab-ci.yml详解(三)

    GitLab CI流水线配置文件.gitlab-ci.yml详解 - contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <con ...

  7. Apache配置文件httpd.conf详解

    转自:http://www.jianshu.com/p/c36dd3946e74 Apache配置文件httpd.conf详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是 ...

  8. yum的配置文件yum.conf详解

    转自:https://blog.csdn.net/im5437/article/details/53445142 说明:经过网上抄袭和自己的总结加实验,非常详细,可留作参考. yum的配置一般有两种方 ...

  9. tsconfig 配置文件各字段详解

    tsconfig 配置文件各字段详解 files 需要解析的ts的文件. {"files": ["./index.ts"] } 当找不到对应的文件时会报错. e ...

  10. Nginx配置文件的结构详解和静态资源部署

    Nginx配置文件的结构详解和静态资源部署 一.配置文件结构 使用Nginx之前,需要先看懂Nginx的配置文件. 因为之后操作Nginx,就是一个对配置文件修改的过程. Nginx的配置文件(con ...

最新文章

  1. Apache 访问权限修改
  2. 编程语言也有环保排队?垫底的居然是它...
  3. Zedboard学习(三):PL下流水灯实验
  4. Java 集合之自动打包和解包以及泛型
  5. hello python的代码,python基础教程之Hello World!
  6. Matlab和C++混合编程
  7. LeetCode 1382. 将二叉搜索树变平衡(中序遍历+二分递归)
  8. CentOS7启用SELinux和Firewall修改ssh端口号
  9. 自适应网页设计(转)
  10. python 删除文件 通配符_python 实现删除文件或文件夹实例详解
  11. 我已经不用 try catch 处理异常了!太辣鸡了!
  12. 佳能Canon imageCLASS MF210 Series 打印机驱动
  13. chm sharp安卓版_CHM Sharp(CHM阅读器)
  14. 翻译: AWS DeepRacer一步一步详细步骤的自定义航点更快地运行 自定义waypoints
  15. NodeJs 面试题 2023
  16. 程序员 不经历风雨,怎么见彩虹
  17. 积分使用及有效期管理
  18. java.lang.OutOfMemoryError: PermGen space
  19. R语言-多元统计学分析课程报告
  20. Docker初级:Docker常用命令总结

热门文章

  1. 计算机考试那些专业知识点,计算机考研专业课考试知识点分析
  2. php 比较字符串差,PHP字符串比较函数strcmp()和strcasecmp()使用总结
  3. 设置VSCode Git签出分支快捷键Alt+G
  4. 在ubuntu 14.04 64bit下配置安装PyQt4(python2.7和python3.4)
  5. uboot引导kernel - 1 - Flash的分区
  6. C语言的双向链表头插法和尾插法,指定节点删除
  7. 开源工程系列之讯飞VBOX改装蓝牙5.0(aptX HD)音箱
  8. C/C++:*(p++)慎用!!!!!
  9. JS document
  10. mysql事务处理用法与实例详解