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的更多相关文章

  1. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  2. mybatis 使用动态SQL

    RoleMapper.java public interface RoleMapper { public void add(Role role); public void update(Role ro ...

  3. MyBatis框架——动态SQL、缓存机制、逆向工程

    MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ...

  4. MyBatis探究-----动态SQL详解

    1.if标签 接口中方法:public List<Employee> getEmpsByEmpProperties(Employee employee); XML中:where 1=1必不 ...

  5. mybatis中的.xml文件总结——mybatis的动态sql

    resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...

  6. mybatis.5.动态SQL

    1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectB ...

  7. MyBatis的动态SQL详解-各种标签使用

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) ...

  8. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  9. mybatis 的动态sql语句是基于OGNL表达式的。

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

随机推荐

  1. yum本地安装rrdtool报错,提示版本冲突的解决办法

    [root@mysql-mon40 mm]# yum localinstall rrdtool-1.4.7-1.el6.rfx.x86_64.rpm -y 错误: Multilib version p ...

  2. 【BIEE】使用BIPublisher做报表时,选择多个参数使用IN的问题

    在使用BIPublisher做报表的时候,报表出现xml数据加载错误的情况 环境描述 仪表盘提示是表示变量,并且支持多选 报表使用xdo方式制作的,直接使用JDBC直连数据库获取数据 数据集中的SQL ...

  3. 在 Ubuntu/Debian 下安装 PHP7.3 教程

    介绍 最近的 PHP 7.3.0 已经在 2018 年12月6日 发布 GA,大家已经可以开始第一时间体验新版本了,这里先放出 PHP7.3 安装的教程以便大家升级. 适用系统: Ubuntu 18. ...

  4. 第08组 Beta冲刺(3/4)

    队名 八组评分了吗 组长博客链接(2分) 组员1李昕晖(组长) 过去两天完成了哪些任务 文字/口头描述 了解各个小组的进度与难以攻破的地方,晚上安排开会,安排新的冲刺任务. 重新分配小组及个人任务. ...

  5. 权重轮询调度算法(WeightedRound-RobinScheduling)

    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 ----参考Nginx中负载均衡算法实现 这里主要参考这篇文章的实现: Nginx 负载均衡-加权轮询策略 ...

  6. numpy的文件存储.npy .npz 文件详解

    Numpy能够读写磁盘上的文本数据或二进制数据. 将数组以二进制格式保存到磁盘 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 ...

  7. 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密

    使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...

  8. kotlin基础 常见容器的取值范围

  9. 转 Oracle 同一个字段的两值进行加减计算

    https://www.cnblogs.com/hjianguo/p/6041617.html 如 病人ID      入院日期                出院日期 00001      2016 ...

  10. setup_module和teardown_module

    setup_module .teardown_module 每个用例开始和结束调用一次 hasattr() 函数用于判断对象是否包含对应的属性 运行结果如下: