博客
关于我
学习在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/

你可能感兴趣的文章
netfilter应用场景
查看>>
Netflix:当你按下“播放”的时候发生了什么?
查看>>
Netflix推荐系统:从评分预测到消费者法则
查看>>
netframework 4.0内置处理JSON对象
查看>>
Netgear WN604 downloadFile.php 信息泄露漏洞复现(CVE-2024-6646)
查看>>
Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(十一)备份
查看>>
netlink2.6.32内核实现源码
查看>>
netmiko 自动判断设备类型python_Python netmiko模块的使用
查看>>
NetMizer 日志管理系统 多处前台RCE漏洞复现
查看>>
NetMizer-日志管理系统 dologin.php SQL注入漏洞复现(XVE-2024-37672)
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
netron工具简单使用
查看>>
NetScaler MPX Gateway Configuration
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
netstat kill
查看>>
netstat命令用法详解
查看>>
Netstat端口占用情况
查看>>
Netty 4的内存管理:sun.misc.Unsafe
查看>>