1、Mybatis采用功能强大的基于ONGL的表达式来完成动态SQL。

2、ONGL常用的元素有:

1》if

<if test="id != null ">
and id = #{id}
</if>

Mybatis中,#{id}表达式获取参数有两种方式:一是从HashMap中获取集合中的property对象;二是从Java Bean中获取property对象。

2》choose

<choose>
<when test="id != null">
and id = #{id}
</when>
<when test="loginname != null and password != null">
and loginname = #{loginname} and password = #{password}
</when>
<otherwise>
and sex = '男'
</otherwise>
</choose>

3》where

<where>
<if test="state != null ">
state = #{state}
</if>
<if test="id != null ">
and id = #{id}
</if>
<if test="loginname != null and password != null">
and loginname = #{loginname} and password = #{password}
</if>
</where>

where元素知道只有在一个以上的if条件有值的情况下才去插入where子句。而且,如果最后的内容是“and”或“or”开头,where元素也知道如何将它们去掉。

 4》set

update tb_employee
<set>
<if test="loginname != null">loginname=#{loginname},</if>
<if test="password != null">password=#{password},</if>
<if test="name != null">name=#{name},</if>
<if test="sex != null">sex=#{sex},</if>
<if test="age != null">age=#{age},</if>
<if test="phone != null">phone=#{phone},</if>
<if test="sal != null">sal=#{sal},</if>
<if test="state != null">state=#{state}</if>
</set>
where id=#{id}

set元素可以动态前置set关键字,同时也会消除无关的逗号。

5》foreach

<select id="selectEmployeeIn" resultType="com.lfy.bean.Emp">
SELECT *
FROM tb_employee
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>

该元素主要应用于构建in条件语句。doreach元素的功能非常强大,它允许指定一个集合,声明可以用在元素体内的集合项和索引变量。也可以指定开闭匹配的字符串以及在迭代中间放置分隔符。

6》bind

<select id="selectEmployeeLikeName"  resultType="com.lfy.bean.Emp">
<bind name="pattern" value="'%' + _parameter.getName() + '%'" />
SELECT * FROM tb_employee
WHERE loginname LIKE #{pattern}
</select>

bind元素可以从ONGL表达式中创建一个变量并将其绑定到上下文。

最新文章

  1. BZOJ1013: [JSOI2008]球形空间产生器sphere
  2. 如何使用SSL pinning来使你的iOS APP更加安全
  3. Windows Sever关于80端口之争
  4. P3376 【模板】网络最大流
  5. Python学习教程(learning Python)--3.3 分支语句的条件表达式详解
  6. BZOJ 1001: [BeiJing2006]狼抓兔子 最小割
  7. mysql数据库文件默认保存目录(windows)
  8. Java学习之内部类
  9. 缓存1 静态缓存--&gt;读库保存成php文件 mkdir--&gt;file_put_contents--&gt;var_export --&gt;include
  10. 今天给大家分享一下PS快捷键大全
  11. Grafana4.2安装
  12. BZOJ 2342: [Shoi2011]双倍回文 [Manacher + set]
  13. ArrayList的addAll方法
  14. fastclick.js插件使用简单说明
  15. Pandas:让你像写SQL一样做数据分析
  16. textarea 标签 属性
  17. [原创] 浅谈ETL系统架构如何测试?
  18. Python Django 获取表单数据的三种方式
  19. hive sql 修改列名
  20. signal(SIGCHLD, SIG_IGN);的使用及验证

热门文章

  1. 34 String、StringBuffer、StringBuilder
  2. 【NOIP2016提高A组模拟10.15】算循环
  3. Leaflet使用vector tiles 标注label设置
  4. 16.合并两个排序的链表(python)
  5. Django orm self 自关联表
  6. 关于 ATL 中 CComControl 的构造
  7. teradata安装
  8. JS常用正则表达式验证
  9. 关于servlet-api.jar和jsp-api.jar的选择和使用
  10. 基于代理的数据库分库分表框架 Mycat实践