博客
关于我
学习在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 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>
mysql 通过查看mysql 配置参数、状态来优化你的mysql
查看>>
mysql 里对root及普通用户赋权及更改密码的一些命令
查看>>
Mysql 重置自增列的开始序号
查看>>
mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
查看>>
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>
mysql-cluster 安装篇(1)---简介
查看>>
mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
查看>>