澳门新葡萄京www27111com

相关下载
文件名 文件大小
mybatis.rar 2m
使用站长秘制下载工具
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : foreach标签   

步骤 1 :

先运行,看到效果,再学习

老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
步骤 2 :

模仿和排错

在确??稍诵邢钅磕芄徽肺尬蟮卦诵兄?,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程
步骤 3 :

foreach标签


SELECT * FROM product_
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>

foreach标签通常用于in 这样的语法里,参考 Oracle的in语法 。
如例,如图查询出id等于1,3,5的数据出来。
foreach标签
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.how2java.pojo"> <select id="listProduct" resultType="Product"> SELECT * FROM product_ WHERE ID in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select> </mapper>
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Product; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); List<Integer> ids = new ArrayList(); ids.add(1); ids.add(3); ids.add(5); List<Product> ps = session.selectList("listProduct",ids); for (Product p : ps) { System.out.println(p); } session.commit(); session.close(); }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-03-04 在模仿的时候发现有趣的事
monkey12



加入id的顺序 和实际遍历打印的顺序,是无关的 ------------------------- 也就是说,实际遍历打印的顺序,一直是按id升序排列的
//main方法
public static void main(String[] args) throws IOException {
		String resource="mybatis-config.xml";
		InputStream inputStream=Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session=sqlSessionFactory.openSession();
		
		List<Integer> ids = new ArrayList();
        ids.add(1);
        ids.add(6);
        ids.add(2);
        
        listByIDs(session, ids);
		
		session.commit();
		session.close();
	}

//遍历ids的方法
private static void listByIDs(SqlSession session,List<Integer> ids) {
		List<Product> ps=session.selectList("listProductIter", ids);
		for (Product p : ps) {
			System.out.println(p);
		}
	}

-----------------------
打印结果如下:
Product [id=1, name=product a, price=88.88]
Product [id=2, name=product b, price=88.88]
Product [id=6, name=product zz, price=99.99]

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-11-03 附加解释一下内容
nanzhang1211
 释义:     collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,上面传的参数为List,所以值为list     item : 表示在迭代过程中每一个元素的别名     index :表示在迭代过程中每次迭代到的位置(下标)     open :前缀     close :后缀     separator :分隔符,表示迭代时每个元素之间以什么分隔 我们通??梢越玫脚可境?、添加等操作中。




2 个答案

一杯长岛下肚 答案时间:2018-01-17
谢谢 :)

how2j 答案时间:2017-11-06
谢谢补充 :)




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-11-03 完善下内容
2017-10-31 站长,这段TestMybatis.java的代码重复了两次
2017-09-19 能讲解一下open="(" separator="," close=")"这个意思吗




提问之前请登陆
关于 JAVA 框架-Mybatis-foreach 的提问

尽量提供截图、代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图