Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】

1、什么是 JdbcTemplate

Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

2、前提准备

2.1 在项目中引入对应的jar包

官网下载jar包、然后加入的项目中(不知如何将jar包导入、可在我博客搜索查看、此处不在赘述)
在这里插入图片描述

2.2 在xml文件配置数据库连接池

友情提示:注意数据库的url以及登录名和账号。这里可以读取外部文件进行配置、前几篇博客有介绍使用。

    <!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="jdbc:mysql://localhost:3306/user_db" /><property name="username" value="root" /><property name="password" value="root" /><property name="driverClassName" value="com.mysql.jdbc.Driver" /></bean>

2.3 配置 JdbcTemplate 对象,注入 DataSource

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

2.4 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

这里使用注解开发

    <!--开启组件扫描--><context:component-scan base-package="com.zyz"></context:component-scan>
/*** @author Lenovo* @version 1.0* @data 2022/10/23 15:53*/
@Service
public class BookService {/*** 注入dao*/@Autowiredprivate BookDao bookDao;}

/*** @author Lenovo* @version 1.0* @data 2022/10/23 15:53*/
@Repository
public class BookDaoImpl implements BookDao{/*** 注入jdbcTemplate*/@Autowiredprivate JdbcTemplate jdbcTemplate;}

2.5 数据库设计

在这里插入图片描述

2.6 创建实体类

package com.zyz.spring5.entity;/*** @author Lenovo* @version 1.0* @data 2022/10/23 16:10*/
public class Book {private int book_id;private String book_name;private String isSale;public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}public String getBook_name() {return book_name;}public void setBook_name(String book_name) {this.book_name = book_name;}public String getIsSale() {return isSale;}public void setIsSale(String isSale) {this.isSale = isSale;}@Overridepublic String toString() {return "Book{" +"book_id=" + book_id +", book_name='" + book_name + '\'' +", isSale='" + isSale + '\'' +'}';}
}

3、项目中的实际案例

3.1 项目结构

在这里插入图片描述

3.2 jdbcTemplate操作数据库 (添加操作)

这里只给出核心部分。具体代码在文章末尾给出。基本思路,dao中定义接口、daoImpl用来实现接口。service中进行调用

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

    @Overridepublic void addBook(Book book) {//1、创建sql语句String sql = "insert into t_book values(?,?,?)";//2、调用方法Object [] args ={book.getBook_id(),book.getBook_name(),book.getIsSale()};int update = jdbcTemplate.update(sql,args);System.out.println(update);}

测试

    @Testpublic void testJdbcTemplate(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(1);book.setBook_name("Java");book.setIsSale("出售");bookService.addBook(book);}

测试结果
在这里插入图片描述

3.2 修改操作

核心部分

这里sql的更新顺序要和参数的顺序保持一致

    @Overridepublic void updateBook(Book book) {//1、创建sql语句String sql = "update t_book set book_name=?,isSale=? where book_id=?";//2、调用方法Object [] args ={book.getBook_name(),book.getIsSale(),book.getBook_id()};int update = jdbcTemplate.update(sql,args);System.out.println(update);}

测试

    @Testpublic void testJdbcTemplate1(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(1);book.setBook_name("数据结构");book.setIsSale("不出售");bookService.updateBook(book);}

测试结果
在这里插入图片描述

3.3 删除操作

核心部分

    @Overridepublic void deleteBook(int id) {//1、创建sql语句String sql = "delete from t_book where book_id=?";//2、调用方法int update = jdbcTemplate.update(sql,id);System.out.println(update);}

测试

    @Testpublic void testJdbcTemplate2(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(1);bookService.deleteBook(book.getBook_id());}

测试结果
在这里插入图片描述

3.4 查询操作(查询返回某个值)

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

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

@Overridepublic int selectCount() {String sql ="select count(*) from t_book";Integer count = jdbcTemplate.queryForObject(sql,Integer.class);return count;}

测试

    @Testpublic void testJdbcTemplate3(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);System.out.println(bookService.selectCount());}

测试结果
在这里插入图片描述

3.5 测试返回查询对象

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

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

测试

    @Testpublic void testJdbcTemplate3(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);System.out.println(bookService.selectBookOne(1));}

测试结果
在这里插入图片描述

3.6 查询返回集合

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

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

测试

    @Testpublic void testJdbcTemplate3(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);System.out.println(bookService.selectBookAll());}

测试结果

在这里插入图片描述

4、完整的代码

4.1 BookDao.java

/*** @author Lenovo* @version 1.0* @data 2022/10/23 15:53*/
public interface BookDao {/*** 添加* @param book*/void addBook(Book book);/*** 修改* @param book*/void updateBook(Book book);/*** 删除* @param id*/void deleteBook(int id);/*** 查询表记录数*/int selectCount();/*** 查询对象*/Book selectOneBook(int id);/*** 查询全部对象*/List<Book> selectAllBook();}

4.2 BookDaoImpl.java

/*** @author Lenovo* @version 1.0* @data 2022/10/23 15:53*/
@Repository
public class BookDaoImpl implements BookDao{/*** 注入jdbcTemplate*/@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic void addBook(Book book) {//1、创建sql语句String sql = "insert into t_book values(?,?,?)";//2、调用方法Object [] args ={book.getBook_id(),book.getBook_name(),book.getIsSale()};int update = jdbcTemplate.update(sql,args);System.out.println(update);}@Overridepublic void updateBook(Book book) {//1、创建sql语句String sql = "update t_book set book_name=?,isSale=? where book_id=?";//2、调用方法Object [] args ={book.getBook_name(),book.getIsSale(),book.getBook_id()};int update = jdbcTemplate.update(sql,args);System.out.println(update);}@Overridepublic void deleteBook(int id) {//1、创建sql语句String sql = "delete from t_book where book_id=?";//2、调用方法int update = jdbcTemplate.update(sql,id);System.out.println(update);}@Overridepublic int selectCount() {String sql ="select count(*) from t_book";Integer count = jdbcTemplate.queryForObject(sql,Integer.class);return count;}@Overridepublic Book selectOneBook(int id) {String sql = "select * from t_book where book_id = ?";Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);return book;}@Overridepublic List<Book> selectAllBook() {String sql = "select * from t_book";List<Book> bookList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class));return bookList;}}

4.3 BookService.java

/*** @author Lenovo* @version 1.0* @data 2022/10/23 15:53*/
@Service
public class BookService {/*** 注入dao*/@Autowiredprivate BookDao bookDao;/*** 添加书* @param book*/public void addBook(Book book){bookDao.addBook(book);}/*** 修改书籍* @param book*/public void updateBook(Book book){bookDao.updateBook(book);}/*** 删除书籍* @param id*/public void deleteBook(int id){bookDao.deleteBook(id);}/*** 查询* @return*/public int selectCount(){return bookDao.selectCount();}/*** 查询对象* @return*/public Book selectBookOne(int id){return bookDao.selectOneBook(id);}/*** 查询全部对象* @return*/public List<Book> selectBookAll(){return bookDao.selectAllBook();}}

4.4 bean.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启组件扫描--><context:component-scan base-package="com.zyz"></context:component-scan><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="jdbc:mysql://localhost:3306/user_db" /><property name="username" value="root" /><property name="password" value="root" /><property name="driverClassName" value="com.mysql.jdbc.Driver" /></bean><!--jdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><property name="dataSource" ref="dataSource"></property></bean></beans>

4.5 测试


/*** @author Lenovo* @version 1.0* @data 2022/10/23 16:26*/
public class TestDemo {@Testpublic void testJdbcTemplate(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(2);book.setBook_name("C语言");book.setIsSale("出售");bookService.addBook(book);}@Testpublic void testJdbcTemplate1(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(1);book.setBook_name("数据结构");book.setIsSale("不出售");bookService.updateBook(book);}@Testpublic void testJdbcTemplate2(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setBook_id(1);bookService.deleteBook(book.getBook_id());}@Testpublic void testJdbcTemplate3(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");BookService bookService = context.getBean("bookService", BookService.class);
//        System.out.println(bookService.selectCount());
//        System.out.println(bookService.selectBookOne(1));System.out.println(bookService.selectBookAll());}}

5、后语

学无止境。下一篇写增删改的批量操作


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部