目录
一、批量插入数据
(一)在DogDao中新增一个功能saveDogList
(二)DogDaoImpl实现类中定义字符串拼接实现功能saveDogList
(三)DogTest测试
(四)批量插入运行结果
(五)优化后的批量插入
1.DogDao接口中还是使用原来的新增功能saveDog
2. DogDaoImpl实现类中实现saveDog功能
3.DogTest测试
4.批量新增优化后的运行结果
二、批量删除数据
1.DogDao接口
2.代码实现
3.运行结果
三、批量修改数据
1.代码实现
2.批量修改运行结果
四、批量查询数据
1.代码实现
2.批量查询运行结果
五、作者要说
我之前的两篇文章《JdbcUtils工具类的优化升级——通过配置文件连接mysql8.0,并对mysql8.0中的表进行[增删改]操作》和《JdbcUtils工具类的优化升级——通过配置文件连接mysql8.0,并对mysql8.0中的表进行[简单查询]操作》都是单行数据的增删改查,接下来讲一下如何进行批量的增删改查操作:
一、批量插入数据
(一)在DogDao中新增一个功能saveDogList
public interface DogDao {
Integer saveDogList(List<Dog> dogs);
}
(二)DogDaoImpl实现类中定义字符串拼接实现功能saveDogList
public class DogDaoImpl extends BaseDao implements DogDao{
@Override
public Integer saveDogList(List<Dog> dogs) {
String sql = "insert into dog(name,health,love,strain,lytime) values";
for (Dog dog :
dogs) {
sql+= "('"+dog.getName()+"',"+dog.getHealth()+","+dog.getLove()+",'"+dog.getStrain()+"',now()),";
}
sql = sql.substring(0,sql.length()-1);
int num = super.executeUpdate(sql);
System.out.println("新增成功!");
return num;
}
(三)DogTest测试
@Test // 通过字符串拼接实现插入
public void testDogDaoInsert(){
DogDao dogDao = new DogDaoImpl();
ArrayList<Dog> dogs = new ArrayList<>();
Dog dog = new Dog("雪碧66", 100, 88, "德牧");
Dog dog2 = new Dog("雪碧99", 100, 88, "德牧");
dogs.add(dog);
dogs.add(dog2);
dogDao.saveDogList(dogs);
}
(四)批量插入运行结果
但是这种字符串拼接的方式还是比较麻烦,每新增一条数据,就要写一遍dogs.add(),下面我们可以通过for循环的方法进行上述代码的优化
(五)优化后的批量插入
1.DogDao接口中还是使用原来的新增功能saveDog
public interface DogDao {
Integer saveDogList(List<Dog> dogs);
// 利用for循环批量新增
Integer saveDog(Dog dog);
}
2. DogDaoImpl实现类中实现saveDog功能
public class DogDaoImpl extends BaseDao implements DogDao{
@Override
public Integer saveDogList(List<Dog> dogs) {
String sql = "insert into dog(name,health,love,strain,lytime) values";
for (Dog dog :
dogs) {
sql+= "('"+dog.getName()+"',"+dog.getHealth()+","+dog.getLove()+",'"+dog.getStrain()+"',now()),";
}
sql = sql.substring(0,sql.length()-1);
int num = super.executeUpdate(sql);
System.out.println("新增成功!");
return num;
}
@Override
public Integer saveDog(Dog dog) {
String sql = "insert into dog(name,health,love,strain,lytime) values(?,?,?,?,now())";
int num = super.executeUpdate(sql, dog.getName(), dog.getHealth(), dog.getLove(), dog.getStrain());
System.out.println("新增成功!");
return num;
}
}
3.DogTest测试
@Test // for循环批量新增
public void testForDogInsert(){
DogDaoImpl dogDao = new DogDaoImpl();
ArrayList<Dog> dogs = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
Dog dog = new Dog("中华田园犬"+i,100-i,100-i,"中华田园犬"+i);
dogs.add(dog);
}
for (Dog ddd:
dogs) {
dogDao.saveDog(ddd);
}
}
4.批量新增优化后的运行结果
参考这种方法,删改查的操作也可以通过for循环来实现
二、批量删除数据
1.DogDao接口
package com.atguigu.kb21.dao;
import com.atguigu.kb21.pojo.Dog;
import java.util.List;
public interface DogDao {
Integer saveDogList(List<Dog> dogs);
// 利用for循环批量新增
Integer saveDog(Dog dog);
Integer updateDog(Dog dog);
Integer delById(Integer id);
Integer delByHealth(Integer health);
// 查询所有狗狗信息
List<Dog> getAllDog();
// 根据狗狗id查询狗狗信息
Dog getDogById(Integer id);
}
2.代码实现
@Test // 根据狗狗id进行for循环批量删除
public void testForDogDelete(){
DogDaoImpl dogDao = new DogDaoImpl();
for (int i = 40; i <= 43; i++) {
dogDao.delById(i);
}
}
3.运行结果
三、批量修改数据
1.代码实现
@Test // for循环批量修改
public void testForDogUpdate(){
DogDaoImpl dogDao = new DogDaoImpl();
ArrayList<Dog> dogs = new ArrayList<>();
for (int i = 50; i <= 53; i++) {
Dog dog = new Dog("狗狗" + i, 40, 50, "犬" + i);
dog.setId(i);
dogs.add(dog);
}
for (Dog d :
dogs) {
dogDao.updateDog(d);
}
}
2.批量修改运行结果
四、批量查询数据
1.代码实现
@Test // 批量查询
public void testForDogSelect(){
DogDaoImpl2 dogDaoImpl2 = new DogDaoImpl2();
// 批量查询id=[15~25]的狗狗信息
for (int i = 15; i <= 25; i++) {
dogDaoImpl2.getDogById(i);
}
}
2.批量查询运行结果
五、作者要说
业务上增删改查的需求各式各样,我的for循环也有局限,并不是一劳永逸的,还需要根据具体业务进行优化。