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非主键);
mybatis之批量查询的更多相关文章
- myBatis批量查询操作,xml中使用foreach案例
使用场景:有一个订单表,实体类为OrderBase.java,订单有个状态为status值可能为"1,2,3,4,5,6",现在需要查询状态为"2,3,4"的订 ...
- Sql批量添加,批量查询,批量删除,批量修改。mybatis都有对应标签
Sql批量添加,批量查询,批量删除,批量修改.mybatis都有对应标签
- Mybatis批处理(批量查询,更新,插入)
mybatis批量查询 注意这里的 in 和 <trim prefix="(" suffix=")"> 以及 in ( )的三种方式的(例1(推 ...
- mybatis批量查询引发的血案
mybatis提供了foreach语法用于所谓的批量查询,使用方式如下: ①.定义接口 /** * 批量获取任务id列表对应的任务名称 * @param taskIdList:任务id列表 * @re ...
- mybatis + mysql 批量插入、删除、更新
mybatis + mysql 批量插入.删除.更新 Student 表结构 批量插入 public int insertBatchStudent(List<Student> studen ...
- mybatis+mysql批量插入和批量更新、存在及更新
mybatis+mysql批量插入和批量更新 一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo, ...
- mybatis中批量插入的两种方式(高效插入)
MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...
- Mybatis 实现批量插入和批量删除源码实例
Mybatis 实现批量插入数据和批量删除数据 学习内容: 准备工作 1.数据库新建表 2.新建 Maven 项目和设置编译版本及添加依赖 3.新建 db.properties 4.新建 mybati ...
- mybatis执行批量更新update
Mybatis的批量插入这里有http://ljhzzyx.blog.163.com/blog/static/38380312201353536375/.目前想批量更新,如果update的值是相同的话 ...
随机推荐
- 【JVM】CMS垃圾回收器
一.简介 Concurrent Mark Sweep,是一种以获取最短回收停顿时间为目标的收集器,尤其重视服务的响应速度. CMS是老年代垃圾回收器,基于标记-清除算法实现.新生代默认使用ParNew ...
- js事件【续】(事件类型)
一.UI事件[使用时需要添加on eg: onload 页面加载完成事件]load [一张页面或一幅图像完成加载]页面加载后触发的事件,即进入页面后 unload [用户退出页面]页面卸载 ...
- 在微信小程序中使用redux
本文主要讲述,在微信小程序中如何使用redux DEMO 需要解决的问题 如何在小程序中引入redux状态管理库,及它相关的插件? 微信小程序没有清晰的异步api,便于thunkMiddleware处 ...
- vue学习整理
1.webpack+vue自定义路径别名 vue-cli 用的是webpack,也可以使用webpack自定义别名这个功能,自定义别名这个功能当你在多层文件夹嵌套的时候不必一层一层找路径,直接使用自定 ...
- 记录下登录Xcode 时出现 please sign in with an app-specific....
今天做到准备提交到APP store时,要用xcode提交,在xcode->open developer tool->application loader时,要登录自己的ID,我登录时输入 ...
- ML- 核函数(Kernel) 的 SVM
Why 核函数 目的是为了解决线性不可分问题. 核心思想是升维. 当样本点在低维空间不能很好地分开的时候, 可以考虑将样本通过某种映射(就是左乘一个矩阵) 到高维空间中, 然后在高维空间就容易求解一个 ...
- 微信小程序引入外部组件 iView Weapp
iview Weapp组件的使用方法: 1. 下载小程序组件库 (前提是你已经有了项目目录) 你可以直接去github把iView Weapp的代码下载下来,也可以用过npm来下载. github地址 ...
- IDEA 创建类是自动添加注释和创建方法时快速添加注释
1.创建类是自动添加注释 /*** @Author: chiyl* @DateTime: ${DATE} ${TIME}* @Description: TODO*/2. 创建方法时快速添加注释2.1 ...
- 利用 Docker 搭建 IPFS 私有网络
利用 Docker 搭建 IPFS 私有网络 本文原始地址:https://sitoi.cn/posts/40630.html 下载项目 项目地址:https://github.com/Sitoi/p ...
- saas系统多租户数据隔离的实现(一)数据隔离方案
0. 前言 前几天跟朋友聚会的时候,朋友说他们公司准备自己搞一套saas系统,以实现多个第三方平台的业务接入需求.聊完以后,实在手痒难耐,于是花了两天时间自己实现了两个saas系统多租户数据隔离实现方 ...