mybatis 基础(二) CRUD中的关键点
今日学习中遇见几个问题
关于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>
mybatis 基础(二) CRUD中的关键点的更多相关文章
- mybatis 基础(二) xml文件中的其他知识点
mybatis xml文件中一些标签的使用 此标签主要用作 配置 "别名" 如果实体类与数据库中字段名在不区分大小写的情况下相同的话, 那就不需要配置resultMap,因为mys ...
- Mybatis基础-完整CRUD操作
步骤一:mybatis基本配置 1)创建Java项目,在lib下导入mybatis所需要的Jar包,包括链接mysql的mysql-connector-java-5.1.7-bin.jar. 2)在s ...
- mybatis 基础(二) 动态sql 关于where if / where choose when otherwise
个人理解: where if就相当于正常的java中的if 语句,如果有多个条件组合判断的话用 and, or连接 而where choose when otherwise choose就好像是swi ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
- Mybatis的学习总结二:使用Mybatis对表进行CRUD操作【参考】
一.使用Mybatis对表进行CRUD操作------基于XML的实现 1.定义SQL的映射文件 2.在conf.xml中进行注册. 2.创建测试类 [具体过程参考:Mybatis的学习总结一] 二. ...
- MyBatis基础入门《二十》动态SQL(foreach)
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
随机推荐
- 技巧:在 C/C++中如何构造通用的对象链表[转]
原文:技巧:在 C/C++中如何构造通用的对象链表 虚拟链表和类链表可以很好地实现这一点 您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情 ...
- HTML5属性备忘单
在网上闲逛的时候看到了文章,感觉总结的这个html5文章,决定转载过来,在排版的时候也帮助自己重新梳理复习一遍.毕竟学习基础最重要. by zhangxinxu from http://www.zha ...
- A. Sea Battle
A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- MySQL_(Java)使用preparestatement解决SQL注入的问题
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC创建用户名和密码校验查询方法 传送门 MySQL数据库中的数据,数据库名garysql,表名gar ...
- Java基础__随机生成1~15之间不重复的数字
package text; import java.util.ArrayList; import java.util.List; public class Text { public static v ...
- Spring Cloud Feign声明式服务调用(转载)+遇到的问题
转载:原文 总结: 1.pom添加依赖 2.application中填写正确的eureka配置 3.启动项中增加注解 @EnableFeignClients 4.填写正确的调用接口 通过原文使用Fei ...
- InnoDB记录存储结构
InnoDB是一个将数据存储到磁盘上的存储引擎.对于更新/写入的数据,先将数据从磁盘中加载到内存,更新后再将数据刷新到磁盘. 行格式 而磁盘与内存交互的数据,InnoDB采取将数据分为若干页,一页一般 ...
- 【全网最优方法】JAVA初学:错误: 找不到或无法加载主类HelloWorld
JAVA初学:错误: 找不到或无法加载主类 HelloWorld 我这是看的黑马2019网课(B站)出现的问题. 放一下别人的图,我也是大概的问题:就是javac没问题,java却无论怎么弄都报错. ...
- Android——NativeActivity - C/C++ Apk开发
android基本的四大组件之一Activity,android开发的第一个hello world 创建的就是这个继承了Activity类的类,拥有对应的生命周期,由AMS维护,只需要重写父类对应的方 ...
- 安装 redis manager
安装文档在redis manager 的官方文档上有,这里做个笔记.官网地址:https://snapcraft.io/redis-desktop-manager 截图1: 可以选择自己的系统,根据里 ...