JdbcTemplate

JdbcTemplate(概念和准备):

1、什么是 JdbcTemplate
(1)Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作;

2、准备工作
(1)引入相关 jar 包

JdbcTemplate

 

 (2)在 spring 配置文件配置数据库连接池

<bean id="dataSourse" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
           <property name="url" value="jdbc:mysql:///user"/>
           <property name="username" value="root"/>
           <property name="password" value="root"/>
           <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
       </bean>

(3)配置 JdbcTemplate 对象,注入 DataSource

 <!--jdbcTemPlate对象-->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
           <!--注入dataSource-->
           <property name="dataSource" ref="dataSourse"></property>
       </bean>

(4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
* 配置文件

 <!--组件扫描-->
       <context:component-scan base-package="com.atguigu"></context:compon-scan>

*Service

package com.atguigu.spring5;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author GGBond
 * @create 2021-04-02-16:26
 */
@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;
}

*Dao

package com.atguigu.spring5;

/**
 * @author GGBond
 * @create 2021-04-02-16:27
 */
public interface BookDao {
}

package com.atguigu.spring5;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

/**
 * @author GGBond
 * @create 2021-04-02-16:27
 */
@Repository
public class BookDaoImpl implements BookDao {
    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

JdbcTemplate 操作数据库(添加):

1、对应数据库创建实体类

package com.atguigu.spring5;

/**
 * @author GGBond
 * @create 2021-04-02-16:42
 */
public class Book {
    private String userId;
    private String username;
    private String ustatus;

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }

    public String getUserId() {
        return userId;
    }

    public String getUsername() {
        return username;
    }

    public String getUstatus() {
        return ustatus;
    }
}

2、编写 service 和 dao
(1)在 dao 进行数据库添加操作
(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作

JdbcTemplate

有两个参数
第一个参数:sql 语句
第二个参数:可变参数,设置 sql 语句值

package com.atguigu.spring5;

/**
 * @author GGBond
 * @create 2021-04-02-16:27
 */
public interface BookDao {
    //添加的方法
    void add(Book book);
}

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

/**
 * @author GGBond
 * @create 2021-04-02-16:27
 */
@Repository
public class BookDaoImpl implements BookDao {
    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void add(Book book) {
        //1.创建SQL语句
        String sql = "insert into t_book values(?,?,?)";
        //2.调用方法实现
        Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
}

3.测试类

package com.atguigu.spring5;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author GGBond
 * @create 2021-04-02-16:52
 */
public class test {
    @Test
    public void test(){
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book = new Book();
        book.setUserId("2");
        book.setUsername("php");
        book.setUstatus("b");
        bookService.addBook(book);
    }
}

JdbcTemplate

 

 JdbcTemplate

 

 JdbcTemplate

 

 

 

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

1.修改

    //修改
    @Override
    public void update(Book book) {
        String sql = "update  t_book set username=?,ustatues=? where userid=?";
        Object[] args = {book.getUsername(), book.getUstatus(), book.getUserId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
 //修改
        Book book= new Book();
        book.setUserId("1");
        book.setUsername("jdbc");
        book.setUstatus("c");
        bookService.updateBook(book);

JdbcTemplate

 

 2.删除

 @Override
    public void delete(String id) {
        String sql = "delete from t_book where userid=?";
        int update = jdbcTemplate.update(sql,id);
        System.out.println(update);
    }

 //删除
bookService.deleteBook("1");
 

JdbcTemplate

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

1、查询表里面有多少条记录,返回是某个值
2、使用 JdbcTemplate 实现查询返回某个值代码

JdbcTemplate

 

 有两个参数:

*第一个参数:sql 语句
*第二个参数:返回类型 Class

 //查询表记录数
    public int findCount(){
        return bookDao.selectCount();
    }
 //查询表记录数
    int selectCount();
 @Override
    public int selectCount() {
        String sql = "select count(*) from t_book";
        Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
        return count;
    }
 //查询返回某个值
        int count = bookService.findCount();
        System.out.println(count);

JdbcTemplate

 

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

1、场景:查询图书详情

2、JdbcTemplate 实现查询返回对象

JdbcTemplate

 

 有三个参数:

第一个参数:sql 语句;

第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装;

第三个参数:sql 语句值;

 //查询返回对象
    public Book findOne(String id){
        return bookDao.findBookInfo(id);
    }
 @Override
    public String toString() {
        return "Book{" +
                "userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", ustatus='" + ustatus + '\'' +
                '}';
    }
@Override
    public Book findBookInfo(String id) {
        String sql = "select *from t_book where userid=?";
        //调用方法
        Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
        return book;
    }
 //查询返回对象
    Book findBookInfo(String id);
//查询返回对象
        Book book = bookService.findOne("1");
        System.out.println(book);

JdbcTemplate

 

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

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

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

JdbcTemplate

有三个参数

第一个参数:sql 语句;
第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装;
第三个参数:sql 语句值;

//查询返回集合
    public List<Book> findAllBook(){
        return bookDao.findAllBook();
    }
//查询返回集合
    List<Book> findAllBook();
 @Override
    public List<Book> findAllBook() {
        String sql = "select *from t_book";
        //调用方法
        List<Book> bookList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class));
        return bookList;
    }
 //查询返回集合
        List<Book> all = bookService.findAllBook();
        System.out.println(all);

JdbcTemplate

 

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

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

2、JdbcTemplate 实现批量添加操作

JdbcTemplate

有两个参数:
* 第一个参数:sql 语句;
*第二个参数:List 集合,添加多条记录数据;

 //批量添加
    public void batchAdd(List<Object[]> batchArgs){
        bookDao.batchAddBook(batchArgs);
    }
@Override
    public void batchAddBook(List<Object[]> batchArgs) {
        String sql = "insert into t_book values(?,?,?)";
        int [] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }
//批量添加
    void batchAddBook(List<Object[]> batchArgs);
//批量添加
        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);
        //调用批量添加
        bookService.batchAdd(batchArgs);

JdbcTemplate

 

 JdbcTemplate

 

 3、JdbcTemplate 实现批量修改操作

 //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
        bookDao.batchUpdateBook(batchArgs);
    }
@Override
    public void batchUpdateBook(List<Object[]> batchArgs) {
        String sql = "update t_book set username=?,ustatus=? where userid=?";
        int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }
//批量修改
    void batchUpdateBook(List<Object[]> 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);
        //调用批量添加
        bookService.batchUpdate(batchArgs);

JdbcTemplate

 

 JdbcTemplate

 

 4、JdbcTemplate 实现批量删除操作

 //批量删除
    public void batchDelete(List<Object[]> batchArgs){
        bookDao.batchDeleteBook(batchArgs);
    }
@Override
    public void batchDeleteBook(List<Object[]> batchArgs) {
        String sql= "delete from t_book where userid=?";
        int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(Arrays.toString(ints));
    }
 //批量删除
    void batchDeleteBook(List<Object[]> batchArgs);
//批量删除
        List<Object[]> batchArgs = new ArrayList<>();
        Object[] o1 = {"3"};
        Object[] o2 = {"4"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        //调用方法实现批量删除
        bookService.batchDelete(batchArgs);

JdbcTemplate

 

 JdbcTemplate

 

上一篇:JDBCTemplate下载方式 2021-07-10


下一篇:Spring5总述(七)—— 基于JdbcTemplate实现数据库操作(代码演示)