java之mybatis之动态sql
1. if 判读条件是否满足,满足将会把 sql 语句加上。
<select id="findUser" parameterType="Map" resultType="User">
select * from t_user where 1=1
<if test="name!=null">
and name like '${name}%'
</if>
</select>
2. choose, when, otherwise -----when可以有多个
<select id="findUser" parameterType="Map" resultType="User">
select * from t_user where 1=1
<choose>
<when test="name!=null">
and name like '${name}%'
</when>
<otherwise>
and age=23
</otherwise>
</choose>
</select>
3.where 标签 判断是否有条件成立
如果有条件则加上 where,如果没有则不加。
where元素知道插入“where”如果它包含的标签中有内容返回的话。
此外,如果返回的内容以“AND”或者"OR"开头,它会把“AND”获取“OR”去掉。
<select id="findUser" parameterType="Map" resultType="User">
select * from t_user
<where>
<if test="name!=null">
name like '${name}%'
</if>
<if test="age>23">
and age=23
</if>
</where>
</select>
4. trim----overrides属性使用了管道分隔的文本列表来覆写,而且它的空白也是不能忽略的。
这样的结果是移出了指定在 overrides属性里字符,而在开头插入 prefix属性中指定的字符。
<select id="findUser" parameterType="Map" resultType="User">
select * from t_user
<trim prefix="order by" prefixOverrides="AND |OR ">
<if test="age>23">
and age desc
</if>
</trim>
</select>
5. foreach ----经常使用到的功能是集合迭代,通常用在 IN条件句。
<select id="findUser" parameterType="list" resultType="User">
select * from t_user
<where>
id in
<foreach collection="list" item="var"
open="(" close=")" separator=",">
#{var}
</foreach>
</where>
</select>
java之mybatis之动态sql的更多相关文章
- MyBatis的动态SQL详解
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...
- mybatis 使用动态SQL
RoleMapper.java public interface RoleMapper { public void add(Role role); public void update(Role ro ...
- MyBatis框架——动态SQL、缓存机制、逆向工程
MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ...
- MyBatis探究-----动态SQL详解
1.if标签 接口中方法:public List<Employee> getEmpsByEmpProperties(Employee employee); XML中:where 1=1必不 ...
- mybatis中的.xml文件总结——mybatis的动态sql
resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...
- mybatis.5.动态SQL
1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectB ...
- MyBatis的动态SQL详解-各种标签使用
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) ...
- 利用MyBatis的动态SQL特性抽象统一SQL查询接口
1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...
- mybatis 的动态sql语句是基于OGNL表达式的。
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...
随机推荐
- java读取文件夹下文件及txt内容
public class PositionController { // 读取txt内容 public static String txt2String(File file) { ...
- Keras split train test set when using ImageDataGenerator
Keras split train test set when using ImageDataGenerator I have a single directory which contains su ...
- docker stack删除network失败
现象描述 删除stack的时候没太多提示,但再启动相同的stack会报错,提示网络创建失败:随后使用network ls命令可以看到之前的network还在: 使用docker network rm还 ...
- Linux内核链表复用实现栈
我们当然可以根据栈的特性,向实现链表一样实现栈.但是,如果能够复用已经经过实践证明的可靠数据结构来实现栈,不是可以更加高效吗? so,今天我们就复用Linux内核链表,实现栈这样的数据结构. 要实现的 ...
- CentOS6非root用户下安装及配置CDH5.3.0
#install lsb packagesudo yum install -y redhat-lsb #install net-tools package sudo yum install -y ne ...
- SQL Server 2008 R2 安装 下载
[参考]https://www.aiweibk.com/6697.html winrm 服务未启动,需要先配置.以管理员身份启动 cmd,执行 winrm quickconfig 命令. 微信截图_2 ...
- ubuntu 各压缩文件解压命令大全
.tar 解包:tar xvf xxx.tar 打包:tar cvf xxx.tar DirName (注:tar是打包,不是压缩!) .gz 解压1:gunzip FileName.gz 解压2:g ...
- matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size
一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...
- Spring BeanFactory 初始化 和 Bean 生命周期
(version:spring-context-4.3.15.RELEASE) AbstractApplicationContext#refresh() public void refresh() t ...
- python 根据生日计算年龄 sqlalchemy根据身份证号计算生日 性别
import datetime '): birth_d = datetime.datetime.strptime(birth_s, "%Y%m%d") today_d = date ...