• Mybatis传参parameterType为List<Map>


    这里分别记录使用过的七种传参方式:

    1、在入参只有一个的情况下,Mapper.java中直接传即可

    2、而在参数有两三个的情况下,Mapper.java中可以用@Param注解来指定入参

    程序就知道哪个参对应拼接完SQL的哪个条件字段

     并且Mapper.xmlparameterType不用去指定,因为使用@Param注解后,MyBatis可以通过类型处理器(TypeHandler) 来推断出具体传入语句的参数

    3、在单表查询时,一个实体类就可以满足所有查询条件入参

    这是最简单省事的,Mapper.java中直接把实体类丢进去即可

     在Mapper.xmlparameterType直接指定为实体类,resultMap指定为实体类的Result即可

    下面是对应实体类的Result

    4、然后如果有了简单的表关联,一个实体类可能满足不了所有查询条件入参,可以建一个DTO什么的,继承于实体类,再设置特殊的参数

     在Mapper.xmlparameterType直接指定为VOresultMap指定为实体类的Result即可

    5、在复杂的多表关联情况下,可以直接创建一个Model,然后把实体类、DTO、VO都甩进去,提供get、set方法即可

    因为在这种情况下,使用一个实体类为入参,属性是不够的,下面是Mapper.java

    Mapper.xmlparameterType直接指定为ModelresultType指定为实体类即可

    6、 如果在某些多表关联条件下,字段数量不多,但存在于多个实体类,就可以不用创建model,直接把参数塞到List里面即可

    下面是Mapper.java,入参和返回都是以List的形式

    Mapper.xmlparameterType就可以不指定了,resultType指定为map即可

    1. = #{eid} (全匹配)
    2. like '%${enterpriseName}%' (模糊)

      在调用这个方法时,创建map,把值put进去即可

    7、 另外,如果SQL遇到需要使用in的情况,这里也可以创建list存in的值,再把这个list作value塞到map里面即可 

    别的地方都是一样,就是入参赋值时给map.put进去一个List就行了;

    然后在Mapper.xmlparameterType依旧不指定,resultType还是为map;

    注意这个里面collection的值是前面map.put时候的key值,不要混了

    测试结果:

     

    以Long id 查 实体类List 

  • 相关阅读:
    1.7.2、计算机网络体系结构分层的必要性
    〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作
    多域名路由访问站点子目录
    Java8 新特性之Stream(七)-- Stream的reduce()详细用法
    总结tomcat优化方法
    机器学习-02-机器学习算法分类以及在各行各业的应用
    【QT基础入门】QT中的容器类:QList
    JVM与JMM的关系
    开发Chrome 插件赚钱的7个主要方式(Chrome Extension )
    车流量监控系统
  • 原文地址:https://blog.csdn.net/SSHLY3/article/details/132740594