今日学习中遇见几个问题

关于mybatis foreach的几种情况

1.当我需要传入多个参数的时候,可以将参数封装进map集合中(一般来说是针对一个对象而言的,比如user中的username,gender,age等)

这里的name,gender均为map的key
参数map应为 Map<String,String> map=new HashMap<>();
map.put("name","chq");
map.put("gender","男");
List<User> list = userDao.findByMap(map); <select id="findByMap" parameterType="java.util.HashMap" resultType="user">
select * from user where username=#{name} and gender=#{gender}
</select>

当传入为多个对象的时候,我们就需要重新创建一个对象,这个对象中包含其他对象以及getter,setter方法

2.批量添加,首先 我们创建一个list集合,向集合中添加user对象,然后遍历,批量添加 注意这里的collection是list

 <insert id="insertBatch" parameterType="java.util.ArrayList"  >
insert into user(username,age,gender) values
<foreach collection="list" item="user" separator=",">
(#{user.userName},#{user.age},#{user.gender})
</foreach>
</insert> public void testInsertBatch() throws Exception{
List<User> list=new ArrayList<>();
User user1=new User();
user1.setUserName("111");
user1.setGender("女");
user1.setAge(33);
User user2=new User();
user2.setUserName("222");
user2.setGender("女");
user2.setAge(44);
User user3=new User();
user3.setUserName("333");
user3.setGender("女");
user3.setAge(55);
list.add(user1);
list.add(user2);
list.add(user3);
boolean b = userDao.insertBatch(list);
System.out.println(b);
}

3.当非一个对象的参数时候,我们可以把多个对象添加到map集合中,然后再去操作, 比如下方,我们map集合中有属性gender, 以及一个list

这个与重新重建一个实体类有什么区别呢? 个人见解: 好像没啥区别,就算到时候回传到前台时也是几乎差不多.....有哪位有好的见解欢迎留言....!!!!!!!!!!!

    <select id="findByMapMore" parameterType="java.util.Map" resultType="user">
select * from user where gender=#{gender} and uid in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select> @Test
public void testFindByMapMore() throws Exception{
Map<String,Object> map=new HashMap<>();
map.put("gender","男");
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
map.put("ids",list);
List<User> users = userDao.findByMapMore(map);
for (User user:users){
System.out.println(user);
}
}

4.传入一个数组时,注意collection是array,


@Test
public void testFindByArray() throws Exception{
Integer[] arrays=new Integer[]{1,2,3,4,5};
List<User> list=userDao.findByArray(arrays);
for(User user:list){
System.out.println(user);
}
} <select id="findByArray" resultType="user">
select * from user where uid in
<foreach collection="array" open="(" separator="," close=")" index="index" item="id">
#{id}
</foreach>
</select>

最新文章

  1. linux学习笔记-dump命令的使用
  2. iPhone(iOS设备) 无法更新或恢复时, 如何进入恢复模式
  3. C语言实现strlen
  4. JasperReports+iReport打印为excel表头重复问题解决
  5. Android 多种方式正确的加载图像,有效避免oom
  6. 两次fclose引发的血案
  7. hibernate 插入数据时让数据库默认值生效
  8. 小细节,大用途,35 个 Java 代码性能优化总结!
  9. 团队项目:Recycle
  10. zabbix监控服务搭建
  11. [Linux]安装pyenv
  12. PHP关联查询
  13. kubernetes 基本命令
  14. CSS基础学习(一) 之 line-height 与 height 属性区别
  15. 【转载】 强化学习(十)Double DQN (DDQN)
  16. springMVC非注解常用的&quot;处理器映射器&quot;、&quot;适配器&quot;、&quot;处理器&quot;
  17. redis使用日志(4):如何让外部服务器访问
  18. 汇编试验四:[bx] 和 loop 的使用
  19. deep learning2
  20. web页面在ios下不支持fixed可用absolute替代的方案

热门文章

  1. mac重启nginx时报nginx.pid不存在的解决办法
  2. intellij idea http proxy config
  3. Git本地安装
  4. PHP-windows下安装
  5. hive连接hbase
  6. Linux查看和编辑文件
  7. HLS协议解析
  8. Java-UncaughtExceptionHandler 捕获线程异常
  9. 学习 C++ 读什么书
  10. 数据库开源框架之ormlite