mybatis动态sql,常用元素介绍

mybatis动态sql,常用元素介绍mybatis 动态 sqlif 元素 choose when otherwisefor 元素 bing 元素 if 元素 choose when otherwisefor 元素 bing 元素

mybatis动态sql,常用元素介绍

if元素

<select id="findRole1" parameterType="string" resultMap="roleResultMap"> select role_no, role_name, note from t_role where 1=1 <if test="roleName != null and roleName !=''"> and role_name like concat('%', #{roleName}, '%') </if> </select> 

当参数“roleName”参数不为空的时候,就执行对“roleName”的模糊查询的操作。这个是经常用到的标签,需要重点掌握

choose、when、otherwise

<select id="findRole2" parameterType="role" resultMap="roleResultMap"> select role_no, role_name, note from t_role where 1=1 <choose> <when test="roleNo != null and roleNo !=''"> AND role_no = #{roleNo} </when> <when test="roleName != null and roleName !=''"> AND role_name like concat('%', #{roleName}, '%') </when> <otherwise> AND note is not null </otherwise> </choose> </select> 

choose、when、otherwise相当于java代码中的switch、case、default功能的语句,也是比较常用的标签,需要重点掌握。

foreach元素

<select id="findRoleByNums" resultMap="roleResultMap"> select role_no, role_name, note from t_role where role_no in <foreach item="roleNo" index="index" collection="roleNoList" open="(" separator="," close=")"> #{roleNo} </foreach> </select> 

foreach 元素是一个循环语句,他的作用是编译集合,往往作用与SQL中的in关键字。

  • collection:配置的是传过来的参数名称,他可以是一个数组或者集合
  • open、close:是表示用什么符号将这些集合元素包装起来
  • separator:用什么符号间隔起来
  • index:这个就比较明显了,数据数据的下标
  • item:配置的是循环当中的元素
    使用foreach时,如果作用于in关键字,需要考虑SQL语句的长度,因为有的数据库对SQL语句的长度是有限制的

bing元素

<select id="findRole" parameterType="string" resultMap="roleResultMap"> <bind name="pattern" value="'%'+_parameter+'%'"></bind> select role_no, role_name, note from t_role where role_name like #{pattern} </select> 

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文,这样更方便使用。在进行模糊查询的时候,我们mysql数据库,常常用到的是concat来连接数据库:concat(’%’,name,’%’),而oracle这是用“||”来连接,但是我们用bind来定义一个变量,就不用管数据库语言了,兼容性更强。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS 2017安装教程

    VS 2017安装教程 1、首先下载安装包,地址是:https://www.microsoft.com/zh-cn/download/,进入首页后选择开发人员工具,进入开发人员工具后即可下载VS,VS有三个版本,分别是社区版、专业版、企业版。我选择的是社区版。点击下载VisualStudio(蓝色底纹)左下侧的发行说明,即可下载以前的旧版本(https://my.visualstudio.com/download…

    2022年6月9日
    44
  • java之二维数组的初始化

    java之二维数组的初始化二维数组的格式:二维数组的内存图:二维数组的例子:

    2022年5月16日
    47
  • 【C#】 Convert.ToInt16 、Convert.ToInt32、Convert.ToInt64 区别[通俗易懂]

    【C#】 Convert.ToInt16 、Convert.ToInt32、Convert.ToInt64 区别[通俗易懂]   一般写程序是用的都是Convert.ToInt32,为什么呢?1.Convert.ToInt是数据类型转换成int类型2.   有三种方法toint16,toint32,toint64   int16-数值范围:-32768到32767   int32-数值范围:-2,147,483,648到2,147,483,647   int64…

    2022年9月20日
    2
  • 配置管理系统和总体变更系统有什么差别与联系

    配置管理系统和总体变更系统有什么差别与联系

    2021年12月5日
    61
  • android 获取收到短信验证码,Android自动获取短信验证码

    android 获取收到短信验证码,Android自动获取短信验证码如此当有短信收到时就可以将短信内容写到SD卡中的文件里在另一个java类中写个读取文件内容的方法,并在写测试用例过程中,将得到的String按验证码的具体位置截取即可。publicStringread(Stringstr)throwsIOException{Filefile=newFile(str);FileInputStreamfis=newFileInputStream(fi…

    2022年7月25日
    12
  • java栈堆方法区分别存放的东西_java创建栈和堆对象

    java栈堆方法区分别存放的东西_java创建栈和堆对象之前给大家讲了一下java栈和堆的区别,下面又要给大家详细的讲一下java栈和堆分别存放的是什么,一起来详细的了解一下吧!一、java栈、堆存放的是什么?在java当中,栈中,存放的是基本数据类型和堆中对象的引用,而,堆中,存放的则是对象。其他:一个对象的大小,是不能够估计的,我们又可以这样说,是能够动态变化的,可是在栈中,一个对象就只对应了一个4btye的引用,这也是堆和栈分离的好处。那么相信很…

    2025年9月16日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号