博客
关于我
学习在IDEA中使用Mybatis(五)动态sql
阅读量:390 次
发布时间:2019-03-05

本文共 2788 字,大约阅读时间需要 9 分钟。

1. 使用if判断及ONGL

(1)创建接口EmployeeMapperDynamicSQL添加get方法:

在这里插入图片描述
(2)添加相应接口配置文件:

(3)执行test方法:

在这里插入图片描述

2 .where标签

查询的时候如果某些条件没带可能sql拼接会有问题。解决方法:

(1)给where后面加上1=1
(2)使用where标签来将所有的查询天剑包括在内,mybatis会将where标签中拼接sql多的and或者or去掉。(注:where标签只会去掉第一个多出来的and或者or,即需要将and或者or放在sql语句开头)
在这里插入图片描述

3.trim标签

where标签不能解决sql拼接以后后面多出的and或者or

prefix="":前缀,trim标签体中是整个字符串拼串后的结果prefix给拼串后的整个字符串加一个前缀
prefixOverrides="":前缀覆盖, 去掉整个字符串前面多余的字符
suffix="":后缀,suffix给拼串后的整个字符串加一个后缀
suffixOverrides="" : 后缀覆盖:去掉整个字符串后面多余的字符

id=#{id} and
last_name like #{last_name} and
email=#{email} and
gender=#{gender}

4.choose标签 — 分支选择

带了break的swtich-case:如果带了id就用id查,如果带了last_name就用last_name查;只会进入其中一个

(1)添加方法
在这里插入图片描述
(2)增加配置

(3)运行测试方法

在这里插入图片描述
在这里插入图片描述

5.set标签—封装修改条件并且与if结合的动态更新(update)

(1)接口中添加方法

在这里插入图片描述
(2)添加配置

update tbl_employee
last_name=#{last_name},
email=#{email},
gender=#{gender}
where id=#{id}

6.foreach遍历集合

应用1:使用foreach批量插入

sql语句:

INSERT INTO tbl_employee(last_name,email,gender,d_id)	VALUES('tom','tom@qq.com','0',1),	      ('jcak','jack@qq.com','1',2)

配置文件(1):

INSERT INTO tbl_employee(last_name,email,gender,d_id) VALUES
(#{emp.last_name},#{emp.email},#{emp.gender},#{emp.dept.id})

配置文件(2):

在这里插入图片描述

测试方法:
在这里插入图片描述

7.内置参数和bind标签

两个内置参数: 不只是方法传递过来的参数可以被用来判断,取值。。。 mybatis默认还有两个内置参数:

_parameter:代表整个参数
单个参数:_parameter就是这个参数
多个参数:参数会被封装为一个map;_parameter就是代表这个map
_databaseId:如果配置了databaseIdProvider标签。
_databaseId就是代表当前数据库的别名oracle
bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值

8.sql和include标签

抽取可重用的sql片段。方便后面引用

1、sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用
2、include来引用已经抽取的sql:
3、include还可以自定义一些property,sql标签内部就能使用自定义的属性
include-property:取值的正确方式${prop},
#{不能使用这种方式}

insert into employees( 		
)
select #{emp.last_name} last_name,#{emp.email} email from dual
employee_id,last_name,email
last_name,email,gender,d_id

转载地址:http://vvewz.baihongyu.com/

你可能感兴趣的文章
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现< 以及> 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>