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

你可能感兴趣的文章
NAT PAT故障排除实战指南:从原理到技巧的深度探索
查看>>
nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
查看>>
NAT-DDNS内网穿透技术,快解析DDNS的优势
查看>>
NAT-DDNS内网穿透技术,快解析DDNS的优势
查看>>
NAT-DDNS内网穿透技术,解决动态域名解析难题
查看>>
natapp搭建外网服务器
查看>>
NativePHP:使用PHP构建跨平台桌面应用的新框架
查看>>
nativescript(angular2)——ListView组件
查看>>
NativeWindow_01
查看>>
Native方式运行Fabric(非Docker方式)
查看>>
Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
查看>>
Nature和Science同时报道,新疆出土四千年前遗骸完成DNA测序,证实并非移民而是土著...
查看>>
Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
nat打洞原理和实现
查看>>
NAT技术
查看>>
NAT模式/路由模式/全路由模式 (转)
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>