zoukankan      html  css  js  c++  java
  • mybatis之批量查询

    关于MyBatis批量更新和添加,参考我的如下文章即可:
    MyBatis的批量更新实例

    MyBatis的批量添加实例

    另外不管是批量的新增、删除、修改、查询也好,还是单个新增、删除、修改查询也罢。都会用到动态SQL。

    关于MyBatis的动态SQL可以参考我的这篇文章,如下:
    MyBatis实战之动态SQL

    今天这篇文章主要是为了记录,最近用MyBatis-Plus特别多,很多增、删、改、查以及批量相关操作,拿来即用,戊戌时自己编写。特轻松。

    但是因为最近的一个需求不得不自己手写批量查询例子(主要涉及联表之类的操作)。

    正好以该例子进行讲解,也给我,给大家做个小小参考。

    关键XML:

    <select id="getStudentSubmitHomeWorkListInfos" resultMap="BaseResultMap">
    
    SELECT s.`solution_id`,s.`problem_id`,s.`user_id`,s.`nick`,s.`result`,p.title
    FROM solution AS s left join problem as p ON(s.problem_id = p.problem_id) WHERE  
     s.`user_id` in
       <foreach collection="list" item="userId" open="(" close=")" separator=",">
       #{userId}
       </foreach>
    
    </select>

    foreach相关参数解释:

    collection配置的users是传递进来的参数名称,它可以是一个数组或者List、Set等集合;

    item配置的是循环中当前的元素;

    index配置的是当前元素在集合的位置下标;

    separator是各个元素的间隔符;

    open和colose代表的是以什么符号将元素包裹起来;

    关键DAO:

    public List<Solution> getStudentSubmitHomeWorkListInfos(List<String> userId);

    单元测试:

    @Test
    public void testCollectionRun() {
        
        List<String> userId = new ArrayList<String>();
        userId.add("admin");
        userId.add("student");
    
    
            
        List<Solution> solutionList = solutionDao.getStudentSubmitHomeWorkListInfos(userId);        
        for (Solution solution : solutionList) {
            
            System.out.println("solution:"+solution.getNick()+"||"+solution.getResult()+"||"+solution.getTitle());
        }
        
        
        
    }

    顺便说说批量查询的应用场景:
    (1)特定的场景获取用户订单列表数;
    (2)获取某一个题目许学生提交的结果(以用户id作为查询参数,该用户id非主键);

  • 相关阅读:
    git cherrypick 小结
    git 忽略机制
    git revert 小结
    git 忽略机制
    学习 原理图2 电源电路
    git merge 和 git rebase 小结
    git cherrypick 小结
    学习 原理图2 电源电路
    git revert 小结
    使用SMTP发送邮件
  • 原文地址:https://www.cnblogs.com/youcong/p/11524013.html
Copyright © 2011-2022 走看看