手机版
你好,游客 登录 注册
背景:
阅读新闻

Spring Boot 2注解使用Mybatis动态SQL

[日期:2019-02-09] 来源:Linux社区  作者:luohanguo [字体: ]

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

linux
相关资讯       Spring Boot 2注解  Spring Boot 2 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款