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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • web激活码【中文破解版】[通俗易懂]

    (web激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~DB…

    2022年3月26日
    46
  • 几款强大的网页生成工具[通俗易懂]

    几款强大的网页生成工具[通俗易懂]Carrd这款软件是免费的,可以帮助初学者制作一个简单、响应快捷的网页。链接:https://carrd.co/2.TemplateStash这款软件几乎集合了所有类型网页的模板,你可以通过关键词检索来找到你想要的主题风格。链接:http://www.templatestash.com/3.Bubble这款软件的优势在于使用者不用掌握任何编程技巧就可以制作网页,它独特的…

    2022年5月11日
    52
  • lm算法的实现方法_信赖域算法

    lm算法的实现方法_信赖域算法完整文章请查看这里。转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保持文章的完整性。 LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。 LM算法

    2022年9月27日
    4
  • googlenet优点_googlenet提出的inception结构优势

    googlenet优点_googlenet提出的inception结构优势googlenet是2014年imagenet的冠军,同年还有VGG。因此在说googlenet之前,先回顾下VGG。之前介绍过fasterRCNN,fasterRCNN底层的模型官方支持了VGG和ZF,同样在K80下,ZF大概是8fps的速度,而VGG大概是3fps,这无疑就说明了VGG有些重。再给个直观的感受,通常我们VGG的fasterRCNN模型大概是400M左右,而goog…

    2022年8月14日
    8
  • Spring AOP原理「建议收藏」

    Spring AOP原理「建议收藏」Spring AOP原理

    2022年4月25日
    49
  • java移动端开发_移动端开发

    java移动端开发_移动端开发1.移动端视口问题视口是指浏览器的可视区域,移动端的视口到底是多宽呢?现在市面上的大部分手机,比如iphoneX,它的默认视口宽度为980px,而一个iphoneX的屏幕宽度仅仅为375px。看到问题了吗?一个宽度只有375像素的手机,却能够显示宽度为980像素的网页,自然而然,网页会被缩小。(注:实际上,这里说的375像素不是真实的物理像素,至于这个375像素是怎么来的,以及为什么大部分移动…

    2022年6月24日
    49

发表回复

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

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