Spring——JdbcTemplate操作数据库

一、概念和准备

  1. 什么是JdbcTemplate?
    Spring框架对JDBC进行封装,使用JdbcTemplate可以方便的实现对数据库操作。
  2. 准备工作
    (1)引入相关的jar包和依赖
    在这里插入图片描述
    (2)在spring配置文件中配置数据库的连接池
    <!--数据库连接池配置-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="url" value="jdbc:mysql:///user_db"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    </bean>

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

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

(4)创建service类,创建dao类,在dao类注入jdbcTemplate对象

  • 配置文件
<!--组件扫描-->
    <context:component-scan base-package="org.example"></context:component-scan>
  • service类
@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao userDao;
}

  • dao类
public interface BookDao {
    
    
}

@Repository
public class BookDaoImpl implements BookDao{
    
    

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

二、Jdbc Template操作数据库(添加)

  1. 对应数据库表创建实体类
public class Book {
    
    
    private String bookId;
    private String bookName;
    private String bookStatus;

    public String getBookId() {
    
    
        return bookId;
    }

    public void setBookId(String bookId) {
    
    
        this.bookId = bookId;
    }

    public String getBookName() {
    
    
        return bookName;
    }

    public void setBookName(String bookName) {
    
    
        this.bookName = bookName;
    }

    public String getBookStatus() {
    
    
        return bookStatus;
    }

    public void setBookStatus(String bookStatus) {
    
    
        this.bookStatus = bookStatus;
    }
}
  1. 编写service和dao
    (1) 在dao进行数据库添加操作
public interface BookDao {
    
    
    void add(Book book);
}

@Service
public class BookService {
    
    
    //注入dao
    @Autowired
    private BookDao bookDao;

    public void addBook(Book book) {
    
    
        bookDao.add(book);
    }
}

(2)调用jdbcTemplate对象里面的update方式实现操作。
在这里插入图片描述
有两个参数:第一个参数是sql语句,第二个参数是可变参数,设置sql语句值。

@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. 调用方法实现
        int update = jdbcTemplate.update(sql, book.getBookId(), book.getBookName(), book.getBookStatus());
        System.out.println(update);
    }
}

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

    @Override
    public void updateBook(Book book) {
    
    
        String sql = "update t_book set book_name=?,book_status=? where book_id=?";
        Object[] args = {
    
    book.getBookName(), book.getBookStatus(), book.getBookId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }

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

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

  1. 查询表里面有多少条记录,返回是某个值。
  2. 使用Jdbctemplate实现查询返回某个值。
    在这里插入图片描述
    @Override
    public int selectCount() {
    
    
        String sql = "select count(*) from t_book";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }

五、JdbcTemplate操作数据库(查询返回某对象)
1.场景:查询图书详请
2.JdbcTemplate查询返回对象
在这里插入图片描述
有三个参数
第一个是:sql语句
第二个是:RowMapper,是接口,返回不同类型数据,使用这个接口里面实现类完成数据封装
第三个参数:sql语句值

    @Override
    public Book findOne(String id) {
    
    
        String sql = "select * from t_book where book_id=?";
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

六、JdbcTemplate操作数据库(查询返回集合)
1.场景:查询图书列表分页…
2.调用JdbcTemplate方法实现查询返回方法
在这里插入图片描述

    @Override
    public List<Book> findAllBook() {
    
    
        String sql = "select * from t_book";
        List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return bookList;
    }

七、JdbcTemplate操作数据库(批量操作)
1.批量操作:操作表里面多条记录
2.JdbcTemplate实现批量添加操作
在这里插入图片描述
有两个参数:第一个参数:sql语句。第二个参数:List集合,添加多条记录数据

    @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));
    }

3.JdbcTemplate实现批量修改操作

    @Override
    public void batchUpdateBook(List<Object[]> objects) {
    
    
        String sql = "update t_book set book_name=?, book_status=? where book_id=?";
        jdbcTemplate.batchUpdate(sql, objects);
    }

注意:Ojbect[]数组中各项要与sql语句中的占位符“?”一一对应,不要弄错顺序。
4.JdbcTemplate实现批量删除操作

   @Override
    public void batchDeleteBook(List<Object[]> objects) {
    
    
        String sql = "delete from t_book where book_id=? and book_name=? and book_status=?";
        jdbcTemplate.batchUpdate(sql, objects);
    }

猜你喜欢

转载自blog.csdn.net/AmorFati1996/article/details/109507101