四、JdbcTemplate2

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 四、JdbcTemplate2

JdbcTemplate 操作数据库(修改和删除)

UserService
//修改的方法
    public void updateUser(User user){
        userDao.update(user);
    }
    //删除的方法
    public void deleteUser(String id){
        userDao.delete(id);
    }
UserDaoImpl
 //修改
    @Override
    public void update(User user) {
        String sql ="update t_user set username=?,ustatus=?where user_id=?";
        Object[] args={user.getUsername(), user.getUstatus(),user.getUserId() };
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
    //删除
    @Override
    public void delete(String id) {
        String sql ="delete from t_user where user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }
TestUser
 //修改
//        User user=new User();
//        user.setUserId("1");
//        user.setUsername("javaupup");
//        user.setUstatus("atguigu");
//
//        userService.updateUser(user);
        //删除
//        userService.deleteUser("1");

JdbcTemplate 操作数据库(查询返回某个值)

1、查询表里面有多少条记录,返回就是某个值

2、使用JdbcTemplate实现查询返回某个值代码

 queryForObject(String sql, Class<T> requiredType);
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:返回类型Class
UserService
//查询表中的记录数
    public int findCount(){
        return userDao.selectCount();
    }
UserDaoImpl
//查询表记录数
    @Override
    public int selectCount() {
        String sql="select count(*) from t_user";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }
TestUser
 //查询返回某个值
        int count = userService.findCount();
        System.out.println(count);

JdbcTemplate 操作数据库(查询返回对象)

1、场景:查询图书详情页面

2、JdbcTemplate实现查询返回对象

queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args) 
  • 有三个参数
  • 第一个参数:sql语句
  • 第二个参数:RowMapper,是接口,返回不同类型的数据,使用这个接口里面实现类完成数据封装
  • 第三个参数:sql语句值
 queryForObject(String sql, Class<T> requiredType);
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:返回类型Class

User增加toString方法

UserService
 //查询表中的记录数
    public User findOne(String id){
        return userDao.findUserInfo(id);
    }
UserDaoImpl
//查询返回对象
    @Override
    public User findUserInfo(String id) {
        String sql ="select * from t_user where user_id=?";
        User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
        return user;
    }
TestUser
 //查询返回对象
        User user = userService.findOne("1");
        System.out.println(user);

JdbcTemplate 操作数据库(查询返回集合)

1、场景:查询图书列表分页…

2、调用JdbcTemplate实现查询返回集合

query(String sql, RowMapper<T> rowMapper, Object... args) 
  • 有三个参数
  • 第一个参数:sql语句
  • 第二个参数:RowMapper,是接口,返回不同类型的数据,使用这个接口里面实现类完成数据封装
  • 第三个参数:sql语句值
 queryForObject(String sql, Class<T> requiredType);
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:返回类型Class
UserService
 //查询返回集合
    public List<User> findAll(){
        return userDao.findAllUser();
    }
UserDaoImpl
 //查询返回集合
    @Override
    public List<User> findAllUser() {
        String sql ="select * from t_user";
        List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
        return userList;
    }
TestUser
//查询返回集合
        List<User> all = userService.findAll();
        System.out.println(all);

JdbcTemplate 操作数据库(批量操作)

1、批量操作:操作表里面的多条记录

2、JdbcTemplate 实现批量添加操作

batchUpdate(String sql,List<Object[]> batchArgs) 
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:List集合,添加多条记录数据
UserService
//批量添加
    public void batchAdd(List<Object[]> batchArgs){
        userDao.batchAddUser(batchArgs);
    }
UserDaoImpl
 //批量添加
    @Override
    public void batchAddUser(List<Object[]> batchArgs) {
        String sql="insert into t_user values (?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
TestUser
//批量添加
        List<Object[]> batchArgs=new ArrayList<>();
        Object[] o1={"3","java","a"};
        Object[] o2={"4","C++","b"};
        Object[] o3={"5","MySQL","c"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        //调用批量添加方法
        userService.batchAdd(batchArgs);

3、JdbcTemplate 实现批量修改操作

UserService
 //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
        userDao.batchUpdateUser(batchArgs);
    }
UserDaoImpl
 //批量修改
   @Override
    public void batchUpdateUser(List<Object[]> batchArgs) {
        String sql ="update t_user set username=?,ustatus=?where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
TestUser
//批量修改
        List<Object[]> batchArgs=new ArrayList<>();
        Object[] o1={"java0909","a3","3"};
        Object[] o2={"C++1010","b4","4",};
        Object[] o3={"MySQL1111","c5","5"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        //调用批量修改方法
        userService.batchUpdate(batchArgs);

4、JdbcTemplate 实现批量删除操作

UserService
 //批量删除
    public void batchDelete(List<Object[]> batchArgs){
        userDao.batchDeleteUser(batchArgs);
    }
UserDaoImpl
//批量删除
    @Override
    public void batchDeleteUser(List<Object[]> batchArgs) {
        String sql ="delete from t_user where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
TestUser
 //批量删除
        List<Object[]> batchArgs=new ArrayList<>();
        Object[] o1={"3"};
        Object[] o2={"4"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        //调用批量修改方法
        userService.batchDelete(batchArgs);

完整代码

User

package com.atguigu.spring5.entity;
public class User {
    private String userId;
    private String username;
    private String ustatus;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getUstatus() {
        return ustatus;
    }
    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }
    @Override
    public String toString() {
        return "User{" +
                "userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", ustatus='" + ustatus + '\'' +
                '}';
    }
}

UserDao

package com.atguigu.spring5.dao;
import com.atguigu.spring5.entity.User;
import java.util.List;
public interface UserDao {
    //添加的方法
    public void add(User user);
    //修改的方法
    void update(User user);
    //删除的方法
    void delete(String id);
    //查询表中的记录数
    int selectCount();
    User findUserInfo(String id);
    List<User> findAllUser();
    void batchAddUser(List<Object[]> batchArgs);
    void batchUpdateUser(List<Object[]> batchArgs);
    void batchDeleteUser(List<Object[]> batchArgs);
}

UserDapImpl

package com.atguigu.spring5.dao;
import com.atguigu.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
@Repository
public class UserDapImpl implements UserDao{
   //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
    //添加的方法
    @Override
    public void add(User user) {
        //1.创建sql语句
        String sql="insert into t_user values (?,?,?)";
        //2.调用方法实现
//        Object[] args={user.getUserId(), user.getUsername(), user.getUstatus()};
        int update = jdbcTemplate.update(sql,user.getUserId(), user.getUsername(), user.getUstatus());
        System.out.println(update);
    }
    //修改
    @Override
    public void update(User user) {
        String sql ="update t_user set username=?,ustatus=?where user_id=?";
        Object[] args={user.getUsername(), user.getUstatus(),user.getUserId() };
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
    //删除
    @Override
    public void delete(String id) {
        String sql ="delete from t_user where user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }
    //查询表记录数
    @Override
    public int selectCount() {
        String sql="select count(*) from t_user";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }
    //查询返回对象
    @Override
    public User findUserInfo(String id) {
        String sql ="select * from t_user where user_id=?";
        User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
        return user;
    }
    //查询返回集合
    @Override
    public List<User> findAllUser() {
        String sql ="select * from t_user";
        List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
        return userList;
    }
    //批量添加
    @Override
    public void batchAddUser(List<Object[]> batchArgs) {
        String sql="insert into t_user values (?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
    //批量修改
    @Override
    public void batchUpdateUser(List<Object[]> batchArgs) {
        String sql ="update t_user set username=?,ustatus=?where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
    //批量删除
    @Override
    public void batchDeleteUser(List<Object[]> batchArgs) {
        String sql ="delete from t_user where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
}

UserService

package com.atguigu.spring5.service;
import com.atguigu.spring5.dao.UserDao;
import com.atguigu.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    //注入dao
    @Autowired
    private UserDao userDao;
    //添加的方法
    public void addUser(User user){
        userDao.add(user);
    }
    //修改的方法
    public void updateUser(User user){
        userDao.update(user);
    }
    //删除的方法
    public void deleteUser(String id){
        userDao.delete(id);
    }
    //查询表中的记录数
    public int findCount(){
        return userDao.selectCount();
    }
    //查询表中的记录数
    public User findOne(String id){
        return userDao.findUserInfo(id);
    }
    //查询返回集合
    public List<User> findAll(){
        return userDao.findAllUser();
    }
    //批量添加
    public void batchAdd(List<Object[]> batchArgs){
        userDao.batchAddUser(batchArgs);
    }
    //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
        userDao.batchUpdateUser(batchArgs);
    }
    //批量删除
    public void batchDelete(List<Object[]> batchArgs){
        userDao.batchDeleteUser(batchArgs);
    }
}

TestUser

package com.atguigu.spring5.test;
import com.atguigu.spring5.entity.User;
import com.atguigu.spring5.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class TestUser {
    @Test
    public void testJdbcTemplate(){
        ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userService", UserService.class);
//        User user=new User();
//        user.setUserId("1");
//        user.setUsername("java");
//        user.setUstatus("a");
//
//        userService.addUser(user);
        //修改
//        User user=new User();
//        user.setUserId("1");
//        user.setUsername("javaupup");
//        user.setUstatus("atguigu");
//
//        userService.updateUser(user);
        //删除
//        userService.deleteUser("1");
        //查询返回某个值
//        int count = userService.findCount();
//        System.out.println(count);
        //查询返回对象
//        User user = userService.findOne("1");
//        System.out.println(user);
        //查询返回集合
//        List<User> all = userService.findAll();
//        System.out.println(all);
//        //批量添加
//        List<Object[]> batchArgs=new ArrayList<>();
//        Object[] o1={"3","java","a"};
//        Object[] o2={"4","C++","b"};
//        Object[] o3={"5","MySQL","c"};
//        batchArgs.add(o1);
//        batchArgs.add(o2);
//        batchArgs.add(o3);
//        //调用批量添加方法
//        userService.batchAdd(batchArgs);
//        //批量修改
//        List<Object[]> batchArgs=new ArrayList<>();
//        Object[] o1={"java0909","a3","3"};
//        Object[] o2={"C++1010","b4","4"};
//        Object[] o3={"MySQL1111","c5","5"};
//        batchArgs.add(o1);
//        batchArgs.add(o2);
//        batchArgs.add(o3);
//        //调用批量修改方法
//        userService.batchUpdate(batchArgs);
        //批量删除
        List<Object[]> batchArgs=new ArrayList<>();
        Object[] o1={"3"};
        Object[] o2={"4"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        //调用批量修改方法
        userService.batchDelete(batchArgs);
    }
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Java 数据库 Spring
JdbcTemplate总结
JdbcTemplate总结
65 1
|
6月前
|
Java 数据库连接 数据库
Spring之JdbcTemplate(带你一篇文章搞定JdbcTemplate)
Spring之JdbcTemplate(带你一篇文章搞定JdbcTemplate)
|
SQL XML Java
四、JdbcTemplate1
四、JdbcTemplate1
57 1
|
存储 SQL 缓存
JPA 之 Hibernate EntityManager 专题
JPA 之 Hibernate EntityManager 专题
673 0
JPA 之 Hibernate EntityManager 专题
|
Java 数据库连接 数据库
|
消息中间件 前端开发 NoSQL
SpringMVC(三、JDBCTemplate)
Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作。 Spring MVC 的拦截器(interceptor)类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。 将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方 法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。
212 0
SpringMVC(三、JDBCTemplate)
|
druid Java 数据库连接
数据库连接池和JDBCTemplate介绍
数据库连接池和JDBCTemplate介绍
293 0
|
XML Java 关系型数据库
JdbcTemplate的基本用法
JdbcTemplate的基本用法
508 0
|
SQL 数据格式 关系型数据库