qq_51247807 2022-03-06 16:51 采纳率: 20%
浏览 46
已结题

在Mybatis中如何把Integer类型的集合中的元素作为查询函数的参数,并实现SQL语句的书写

问题遇到的现象和发生背景

我有一个前后端分离的项目,在后端我有两个查询函数,一个是查询表中有哪几个年份,一个是把上一个查出来的年份作为参数查出所在年份有几个人

问题相关代码,请勿粘贴截图

查询有哪几个年份

    @Select(" SELECT DISTINCT DATE_FORMAT(DATE,'%Y')AS DATE\n" +
            " FROM student\n" +
            " ORDER BY DATE")
    List<Integer> getYear();

结果:[2018, 2019, 2020, 2021, 2022]
另一个查询函数:Integer getYearCount(Integer year);

如何把这个结果作为参数编写SQL语句
在Mybatis中
比如(查询语句的参数哪里不知道填什么):


<select id="getYearCount" resultType="int" parameterType="int">
        SELECT COUNT(student.id) FROM student WHERE DATE LIKE('%#{}%')
    </select>
运行结果及报错内容

不知道参数该如何填

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • £漫步 云端彡 2022-03-06 17:23
    关注
    
     // 第一步:
    getYearCount有参数,为List<Integer>,例如声明为List<Integer> getYearCount(List<Integer> years);
    // 查询语句中,用法如下:
     
    <select id="getYearCount" resultType="java.lang.Integer">
            SELECT COUNT(student.id) FROM student 
            <foreach item="year" collection="list" separator="or" open="WHERE" close="">
               DATE LIKE concat('%',#{year},'%')
            </foreach>
            group by date
    </select>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,