

使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
source link: https://blog.51cto.com/u_15740728/5819460
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用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
*/
@Autowired
private BookDao bookDao;
}
/**
* @author Lenovo
* @version 1.0
* @data 2022/10/23 15:53
*/
@Repository
public class BookDaoImpl implements BookDao{
/**
* 注入jdbcTemplate
*/
@Autowired
private 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;
}
@Override
public 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 方法实现添加操作
@Override
public 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);
}
测试
@Test
public 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的更新顺序要和参数的顺序保持一致
@Override
public 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);
}
测试
@Test
public 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 删除操作
核心部分
@Override
public 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);
}
测试
@Test
public 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
@Override
public int selectCount() {
String sql ="select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
return count;
}
测试
@Test
public 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 语句值
核心
@Override
public 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;
}
测试
@Test
public 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 语句值
@Override
public List<Book> selectAllBook() {
String sql = "select * from t_book";
List<Book> bookList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
测试
@Test
public 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
*/
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public 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);
}
@Override
public 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);
}
@Override
public 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);
}
@Override
public int selectCount() {
String sql ="select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
return count;
}
@Override
public 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;
}
@Override
public 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
*/
@Autowired
private 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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://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 {
@Test
public 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);
}
@Test
public 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);
}
@Test
public 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());
}
@Test
public 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());
}
}
学无止境。下一篇写增删改的批量操作
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
-
58
本文是对SpringBoot使用JdbcTemplate操作数据库的一个介绍,,提供一个小的Demo供大家参考。
-
85
前言 本文是对SpringBoot使用JdbcTemplate操作数据库的一个介绍,,提供一个小的Demo供大家参考。 操作数据库的方式有很多,本文介绍使用SpringBoot结合JdbcTemplate。 大...
-
25
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用...
-
25
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是...
-
21
Spring系列之 jdbcTemplate 啥是jdncTemplate? t他是spring框架中提供的一个对象,是对原始的jdbcAPI对象的简单...
-
12
虽然我们前面的db系列教程更多的是基于单数据源的db操作,但是实际的业务开发中,难免会遇到一个项目配置多个数据源的情况,接下来本文将介绍一下多个数据源可以怎么配置,我们的JdbcTemplate又应该如何获取 I. 环境准备 ...
-
7
MongoDB用户权限和增删改查的操作方法以及常用关键字整理 这篇...
-
8
jdbcTemplate连接数据库泛型处理
-
4
MongoDB 的 Insert、Update、Delete 操作。 MongoDB 官方中文文档:MongoDB中文手册|官方文档中文版,基于 4.2 版本。 Insert 特性: MongoDB 所有对单条数据的...
-
3
Android 连接 MySQL 并进行基本的增删改查操作 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK