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

你可能感兴趣的文章
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>