设为首页 收藏本站
查看: 709|回复: 0

[经验分享] mybatis动态SQL语句

[复制链接]
发表于 2018-10-14 12:16:13 | 显示全部楼层 |阅读模式
  一 if标签

    SELECT * from STUDENT_TBL ST
  
  WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
  
  
  二 where标签

    SELECT * from STUDENT_TBL ST
  
  
  ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
  
  
  AND ST.STUDENT_SEX = #{studentSex}
  
  
  
  如果它包含的标签中有返回值的话就插入一个where。此外如果标签返回的内容是以AND或OR开头的,则它会剔除掉。
  三 set 标签
  使用set+if标签修改后,如果某项为null则不进行更新,而是保持数据库原值

    UPDATE STUDENT_TBL
  
  
  STUDENT_TBL.STUDENT_NAME = #{studentName},
  
  
  STUDENT_TBL.STUDENT_SEX = #{studentSex},
  
  
  STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
  

    STUDENT_TBL.CLASS_ID = #{classEntity.classID}
  
  
  WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
  
  四 trim标签
  trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。
  where例子的等效trim语句

    SELECT * from STUDENT_TBL ST
  
  
  ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
  
  
  AND ST.STUDENT_SEX = #{studentSex}
  
  
  
  set例子的等效trim语句

    UPDATE STUDENT_TBL
  
  
  STUDENT_TBL.STUDENT_NAME = #{studentName},
  
  
  STUDENT_TBL.STUDENT_SEX = #{studentSex},
  
  
  STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
  

    STUDENT_TBL.CLASS_ID = #{classEntity.classID}
  
  
  WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
  
  五 choose (when, otherwise)
  有时候并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose 元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java 的switch语句,choose为switch,when为case,otherwise则为default。

    SELECT * from STUDENT_TBL ST
  
  
  
  ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
  
  
  AND ST.STUDENT_SEX = #{studentSex}
  
  
  AND ST.STUDENT_BIRTHDAY = #{studentBirthday}
  

    AND ST.CLASS_ID = #{classEntity.classID}
  
  
  
  
  
  六 foreach
  对于动态SQL 非常必须的,主是要迭代一个集合,通常是用于IN 条件。List实例将使用“list”做为键,数组实例以“array”做为键。
  1 参数为list实例的写法
  SqlMapper.xml

    SELECT * FROM STUDENT_TBL ST
  WHERE ST.CLASS_ID IN
  
  #{classList}
  
  
  Java

  List>  classList.add("20000002");
  classList.add("20000003");
  List studentList = studentMapper.getStudentListByClassIDs(classList);
  for(StudentEntity entityTemp : studentList){
  System.out.println(entityTemp.toString());
  }
  2 参数为Array实例的写法
  SqlMapper.xml

    SELECT * FROM STUDENT_TBL ST
  WHERE ST.CLASS_ID IN
  
  #{ids}
  
  
  Java

  String[]>  ids[0] = "20000002";
  ids[1] = "20000003";
  List studentList = studentMapper.getStudentListByClassIDs(ids);
  for(StudentEntity entityTemp : studentList){
  System.out.println(entityTemp.toString());
  }
  原帖地址:http://blog.csdn.net/ask_rent/article/details/6320326


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-621475-1-1.html 上篇帖子: SQL中GO的用法 下篇帖子: SQL WITH
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表