qq_51247807 2022-03-06 08:51 采纳率: 83.3%
浏览 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 09: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月13日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部