zoukankan      html  css  js  c++  java
  • mybatis传入多个数组或者多个list的实现

    mybatis传入多个数组或多个list
    此博客给出了mybatis传入多个数组或者多个List,传入多个数组或者多个List,传入多个数组或者多个List,而非传入多个参数的一种实现。(PS:传入多个参数很简单,直接去搜会有大量相关博客)
    这几天实现一个小功能,需要在查询数据库时用到两次IN查询,发现直接使用两个list会报错,去搜集了相关资料终于解决了,在此记录一下,以免下次碰到类似问题手足无措。

    直接贴需求代码:
    dao:
    需要实现的是这样子的接口:

    public List<ExamIdAndSubjectId>getIds(@Param("examIds")List<String> examIds,@Param("subjectIds")List<String>subjectIds);
     
    然而实际是这样实现的:

    public List<ExamIdAndSubjectId>getIds(@Param("ids")Ids ids);
     
    POJO类Ids的内容如下(省略get,set,toString方法):

    public class Ids {
    List<String>examIds;
    List<String>subjectIds;
    ..............
    }
     
    mapper:

    <select id="getIds" resultType="cn.siti.domain.ExamIdAndSubjectId">
    SELECT DISTINCT EB_ID AS examId,SUB_CODE AS subjectId
    FROM eqe_exam_paper_new
    WHERE EB_ID IN
    <foreach item="item" collection="ids.examIds" index="idx" open="(" separator="," close=")">
    #{item}
    </foreach>
    AND SUB_CODE IN
    <foreach item="items" collection="ids.subjectIds" index="idx" open="(" separator="," close=")">
    #{items}
    </foreach>
    </select>
     
    简单来讲,在传入多个list时,最好将多个List封装在一个pojo类里面,然后将这个pojo类作为接口的参数传过来,在mapper里面用到list时,用pojo.list方式去取list参数。数组同理。
    至于为什么需要将多个List参数封装,可以参考mybatis jar包里的源码实现(binding文件夹下的MapperMethod.class)。


    已经有人分析过此源码,在此不再套用别人的成果。附上传送门http://www.zhongruitech.com/528480084.html

    https://blog.csdn.net/zh15732621679/article/details/79678363


    ————————————————
    版权声明:本文为CSDN博主「绝命响应」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_39762130/article/details/89670000

  • 相关阅读:
    SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
    SQL Server 多实例下的复制
    SQL Server 批量主分区备份(Multiple Jobs)
    SQL Server 批量完整备份
    SQL Server 游标运用:鼠标轨迹字符串分割
    SQL Server 批量主分区备份(One Job)
    SQL Server 即时文件初始化
    (原+转)Ubuntu中设置程序可用的cpu核心
    (原)Non-local Neural Networks
    (原)softmax loss特征为何径向放射状分布(直观理解,非公式推导。。。)
  • 原文地址:https://www.cnblogs.com/javalinux/p/15356820.html
Copyright © 2011-2022 走看看