Mybatix实现in查询(五)
在这一节,我们要向大家介绍一下在Mybatis中想要实现in查询,Mapper文件应该怎么配置。
1)在com.mybatis.dao.PartDao中增加接口函数
public List<PartInfo> getPartInfoByIDList(List<Integer> idList);
public List<PartInfo> getPartInfoByIDArray(Integer[] idArray);
2) 在com.mybatis.dao.mapper.PartMapper中增加其实现方法
<select id="getPartInfoByIDList" parameterType="java.util.List" resultType="com.mybatis.entity.PartInfo">
SELECT * FROM tbInfoPart
WHERE ID IN
<foreach collection="list" index="i" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select> <select id="getPartInfoByIDArray" parameterType="java.lang.reflect.Array" resultType="com.mybatis.entity.PartInfo">
SELECT * FROM tbInfoPart
WHERE ID IN
<foreach collection="array" index="i" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合:
collecton:要循环的集合,可以是一个List、可以是一个数组
index:循环的索引
item:循环过程中每一个元素的别名
open:整个循环开始之前要增加的字符串
separator:循环之间夹杂的字符串
close:整个循环结束之后要增加的字符串
3)测试下效果
public static List<PartInfo> selectPartByIDList(List<int> idList){
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.getPartInfoIDList";
List<PartInfo> partInfos = session.selectList(statement, idList);
session.close();
return partInfos;
}
public static List<PartInfo> selectPartByIDArray(Integer[] idArray){
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.getPartInfoIDArray";
List<PartInfo> partInfos = session.selectList(statement, idArray);
session.close();
return partInfos;
}
public static void main(String[] args) {
List<Integer> idList = new ArrayList<Integer>();
idList.add(1);
idList.add(2);
idList.add(3);
Integer[] idArray = {1,2,3};
List<PartInfo> partInfos;
partInfos = selectPartByIDList(idList);
for (PartInfo partInfo : partInfos) {
System.out.println("ID:"+partInfo.getId()+" 商品:["+
partInfo.getPartCode()+"] "+
partInfo.getPartName()+" ,售价:"+
partInfo.getSalePrice()+"元/"+
partInfo.getUnit());
partInfos = selectPartByIDArray(idArray );
for (PartInfo partInfo : partInfos) {
System.out.println("ID:"+partInfo.getId()+" 商品:["+
partInfo.getPartCode()+"] "+
partInfo.getPartName()+" ,售价:"+
partInfo.getSalePrice()+"元/"+
partInfo.getUnit());
}
执行后的打印结果为:
ID: 商品:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
ID: 商品:[-] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:.0元/台
ID: 商品:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
ID: 商品:[-] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:.0元/台
可以看到商品信息已经被我们查询到了。
4.目录结构

Mybatix实现in查询(五)的更多相关文章
- {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...
- Mysql-学习笔记(==》连接查询_高级查询五)
CREATE TABLE t( tid INT UNSIGNED NOT NULL AUTO_INCREMENT, tname VARCHAR(30), PRIMARY KEY (tid))ENGIN ...
- IBatis.Net 表连接查询(五)
IBatis.Net之多表查询: 一.定制实际对应类的方式 首先配置多表的测试数据库,IBatis.Net之Oracle表连接查询配置: 首先新建两张表如下: 为两张表建立外键: ALTER TABL ...
- SQL语句(五)子查询
目录 一.子查询含义 二.子查询分类 按子查询的位置分 按结果集的行列数不同分 三.WHERE后面的子查询 1. 标量子查询 2. 列子查询(多行子查询) 3. 行子查询(结果为一行多列或多行多列) ...
- 五、MongoDB的索引
一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 四.MongoDB的查询 五.MongoDB的索引 1.简介 它就像是一本书的目录,如果没 ...
- 05: MySQL高级查询
MySQL其他篇 目录: 参考网站 1.1 GROUP BY分组使用 1.2 mysql中NOW(),CURDATE(),CURTIME()的使用 1.3 DATEDIFF() 函数 1.4 DATE ...
- MySQL巧用sum,case...when...优化统计查询
最近在做项目,涉及到开发统计报表相关的任务,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,后来经过老大的指点利用sum,case...when...重写SQL性能一下子提 ...
随机推荐
- Day 25:XML解析
XML解析 xml文件除了给开发者看,更多的情况使用程序读取xml文件的内容.这叫做xml解析 XML解析方式(原理不同) DOM解析 SAX解析 XML解析工具 DOM解析原理: JAXP (ora ...
- tornado 获取 路径上的参数
https://www.cnblogs.com/quzq/p/10975766.html class JavaHandler(RequestHandler): #重写RequestHandler中in ...
- Kafka--windows下简单使用kafka命令
参考 https://www.cnblogs.com/cici20166/p/9426417.html 启动zookeeper 只需要保证有可用的zookeeper,可以使用kafka内置的,也可以自 ...
- 【pwnable.kr】input
这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...
- 剑指offer - 顺时针打印矩阵 - JavaScript
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下 4 X 4 矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印 ...
- Django——HttpResponse()
HttpResponse(content, #返回给视图函数的内容 content_type=None,#返回给视图函数的类型 text/html文本.text/plain.css.js.xml.js ...
- 一、JavaScript之第一个实例,点击按钮修改文本内容
一.代码如下: 二.运行后效果如下 三.点击按钮,"曾经沧海难为水"变成了日期事件了 <!DOCTYPE html> <html> <meta htt ...
- enlipse 快捷键
ctrl+shift+o 去掉多余的引用类
- ACM-Subset sum
题目描述: Subset Sum Tags: 回溯 子集和问题的一个实例为〈 S,t 〉.其中,S={x1 ,x2 ,…, xn }是一个正整数的集合,c是一个正整数.子集和问题判定是否存在S的一个子 ...
- JAVAEE 和项目开发(第三课:HTTP的请求头和请求方式)
HTTP 协议之请求格式 请求格式的结构:请求行:请求方式.请求的地址和 HTTP 协议版本 请求头:消息报头,一般用来说明客户端要使用的一些附加信息 空行: 位于请求行和请求数据之间,空行是必须 ...