Spring Boot 2注解使用Mybatis动态SQL

1、简单SQL使用

//从***数据表获取统计数据

@Select("select count(*) from issues where issue_type = #{type}")

String getIssueCount(String type);

2、动态SQL使用

//获取时间段内issue详细信息(可根据项目名、开发者名、问题类型获取)

@Select({"<script>",

"select id,committername,type,count,projectname,file,line,message,creationdate,updatedate from issue",

"where creationdate BETWEEN #{startDate} AND #{endDate}",

"<if test=’committer != null and committer.length &gt; 0′>",

"AND committername IN",

"<foreach item=’item’ index=’index’ collection=’committer’ open='(‘ close=’)’ separator=’,’>",

"#{item}",

"</foreach>",

"</if>",

"<if test=’type != null and type.length &gt; 0′>",

"AND type IN",

"<foreach item=’item’ index=’index’ collection=’type’ open='(‘ close=’)’ separator=’,’>",

"#{item}",

"</foreach>",

"</if>",

"<if test=’project != null and project.length &gt; 0′>",

"AND projectname IN",

"<foreach item=’item’ index=’index’ collection=’project’ open='(‘ close=’)’ separator=’,’>",

"#{item}",

"</foreach>",

"</if>",

"</script>"})

List<IssueModel> getDetailIssue(@Param("startDate") String startDate, @Param("endDate")String endDate,

@Param("committer") String[] committer, @Param("type") String[] type,

@Param("project") String[] project);

知识点:

(1)注解写动态SQL,用<script>标签包围,然后像xml语法一样书写。

(2)SQL的拼接可以使用+号,也可以使用逗号。我这里使用的是逗号,要使用+号可以把<script>前后的大括号去掉。

(2)实现IN查询中 > 符号需要转义为 &gt; ,其中foreach的collection直接写成@param中的值即可。

(3)这是一种使用注解完全替代XML的方法,稍微复杂的SQL语句推荐使用XML方式。

Linux公社的RSS地址
https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-02/156807.htm

原文 

https://www.linuxidc.com/Linux/2019-02/156807.htm

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Boot 2注解使用Mybatis动态SQL

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址