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 ...
随机推荐
- 如何去掉word中英文单词下的红色波浪线
文件 ->选项 ->校对 在 只隐藏此文档中的拼写错误(S) 选项前打钩,点击确定即可
- template cannot be keyed. Place the key on real elements instead.
template cannot be keyed. Place the key on real elements instead. 一.总结 一句话总结: 原因:vue不支持在 template 元素 ...
- js去除html标签样式
params = params.replace(/<\/?.+?>/g,"").replace(/ /g,"");
- C#实现图像拖拽以及锚点缩放功能
本文主要实现C#窗体图像拖拽以及锚点缩放功能 1.新建Windows窗体应用项目,添加一个panel控件,在panel控件上添加picturebox控件 代码如下: using System; usi ...
- 七年老运维实战中的 Shell 开发经验总结【转】
无论是系统运维,还是应用运维,均可分为“纯手工”—> “脚本化”—> “自动化”—>“智能化”几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避 ...
- RocketMQ常用命令【转】
首先进入 RocketMQ 工程,进入/RocketMQ/bin 在该目录下有个 mqadmin 脚本 . 查看帮助: 在 mqadmin 下可以查看有哪些命令 a: 查看具体命令的使用 : ...
- 【phpstudy2016】apache配置Tp5.0,获取表单数据总是多了一个路由变量,解决
1.用的apahce配置tp5.0的php环境 2.发现input()过来的数据,总是多了一个变量,那就是路由变量, 类似[array(2) { ["/index/index/form_su ...
- RK3288板子刷linux-ubuntu16固件
Firefly-RK3288 是一个高性能平台,拥有强大的多线程运算能力.图形处理能力以及硬件解码 能力,而且支 持 Android和Ubuntu双系统; 下面我们使用RK3288的板子刷linux ...
- Python3用多线程替代for循环提升程序运行速度
[本文出自天外归云的博客园] 优化前后新老代码如下: from git_tools.git_tool import get_collect_projects, QQNews_Git from thre ...
- sqlserver存储过程创建和java调用
创建存储过程 CREATE procedure [dbo].[getdata_monitor_city_hour_hb] ), ) OUT as begin SET @test = '失败'; if ...