服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|

服务器之家 - 编程语言 - JAVA教程 - Mybatis利用OGNL表达式处理动态sql的方法教程

Mybatis利用OGNL表达式处理动态sql的方法教程

2020-11-17 12:04枯木生花 JAVA教程

这篇文章主要给大家介绍了关于Mybatis利用OGNL表达式处理动态sql的方法教程的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。

本文介绍的是关于Mybatis中用OGNL表达式处理动态sql的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

常用的Mybatis动态sql标签有6种:

      1. if 语句 (简单的条件判断)

      2. choose (when,otherwize) ,相当于Java 语言中的 switch ,与 jstl 中的choose 很类似.

      3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)

      4. where (主要是用来简化sql语句中where条件判断的,能智能的处理 and or ,不必担心多余导致语法错误)

      5. set (主要用于更新时)

      6. foreach (在实现 mybatis in 语句查询时特别有用)

(1) if

模糊查询

?
1
2
3
4
5
6
<select id="select1" resultType="BaseresultMap">
 SELECT * FROM User WHERE Age = ‘18'
 <if test="name != null">
 AND name like #{name}
 </if>
</select>

年龄18且可以模糊搜索姓名

(2)choose,when,otherwize

当Job参数有传入时,就找出对应工作的人,否则就找出Job为none的人,而不是所有人

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<select id="select2" resultType="BaseresultMap">
 SELECT * FROM User WHERE Age = ‘18'
 
 <choose>
 <when test="Job != null">
 AND Job =#{Job}
 </when>
 <otherwise>
 AND Job="none"
 
 </otherwise>
 </choose>
</select>

(3)foreach

?
1
2
3
4
5
6
7
8
<select id="select5" resultType="BaseresultBase">
 select * from User where id in
 <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
  #{item}
 </foreach>
 </select>
 
public List<User> select5(List<Integer> ids);

(4) where set trim

where,set

为什么要用where,因为单纯的写where可能会导致 where And ... 和 where .....情况的发生,Set也是一样的

当然 trim 标签是万能的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<select id="select3" resultType="BaseresultMap">
 SELECT * FROM User
<where>
 
 <if test="Age != null">
 Age = #{Age}
 </if>
 <if test="Job != null">
 AND Job like #{Job}
 </if>
 
<where>
</select>
 
<update id="update1">
 update User
 <set>
 <if test="username != null">username=#{username},</if>
 <if test="password != null">password=#{password},</if>
 <if test="Age != null">Age =#{Age}</if>
 </set>
 where id=#{id}
</update>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616" class="prettyprint lang-xml" name="code"><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616" name="code" class="html"><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616"></pre>
<pre></pre>
<pre></pre>
<p></p>
<pre></pre>
<pre></pre>
<pre></pre>
<pre code_snippet_id="2048504" snippet_file_name="blog_20161214_3_3393435" name="code" class="html"></pre><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_3_3393435"></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
 
</pre><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" rel="external nofollow" ><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div></pre>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:http://blog.csdn.net/qq_28007533/article/details/53619366

延伸 · 阅读

精彩推荐
  • JAVA教程JavaWeb 实现验证码功能(demo)

    JavaWeb 实现验证码功能(demo)

    在 WEB-APP 中一般应用于:登录、注册、买某票、秒杀等场景,大家都接触过这个验证码操作,今天小编通过实例代码给大家讲解javaweb实现验证码功能,需要...

    java教程网4342020-08-05
  • JAVA教程JavaMe开发绘制可自动换行文本

    JavaMe开发绘制可自动换行文本

    JavaMe Graphics类中的drawString不支持文本换行,这样绘制比较长的字符串时,文本被绘制在同一行,超过屏幕部分的字符串被截断了。如何使绘制的文本能自动...

    tandesir2742020-01-05
  • JAVA教程Java遍历Map对象的四种方式

    Java遍历Map对象的四种方式

    本文给大家介绍java遍历map对象的四种方式,对java中遍历map感兴趣的朋友可以一起了解了解 ...

    蒲公英学长5192020-01-13
  • JAVA教程Java实现邮箱发送功能实例(阿里云邮箱推送)

    Java实现邮箱发送功能实例(阿里云邮箱推送)

    这篇文章主要给大家介绍了关于Java实现邮箱发送功能的相关资料,利用阿里云邮箱推送,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一...

    bitQian1962020-09-21
  • JAVA教程Servlet和Filter之间的区别与联系

    Servlet和Filter之间的区别与联系

    这篇文章主要介绍了Servlet和Filter之间的区别与联系的相关资料,需要的朋友可以参考下 ...

    桑梓子1862020-04-24
  • JAVA教程MyBatis缓存实现原理及代码实例解析

    MyBatis缓存实现原理及代码实例解析

    这篇文章主要介绍了MyBatis缓存实现原理及代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    IT-執念4822020-08-28
  • JAVA教程全面解析Java中的注解与注释

    全面解析Java中的注解与注释

    这篇文章主要介绍了Java中的注解与注释,简单来说注解以@符号开头而注释被包含在/***/符号中,各自具体的作用则来看本文详解,需要的朋友可以参考下 ...

    oscar9992092020-04-25
  • JAVA教程如何把Spring Cloud Data Flow部署在Kubernetes上

    如何把Spring Cloud Data Flow部署在Kubernetes上

    这篇文章主要介绍了把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考...

    南瓜慢说5152020-08-03