目录
- 一、Spring Boot整合JDBCTemplatedbc:
- 前言:
- Spring Boot整合JDBCTemplatedbc案例演示:
- 一、创建数据库:
- 二、创建springboot项目:
- 三、导入jdbc等依赖:
- 四、application.yml(配置数据库的连接信息):
- 五、写主启动类:
- 六、业务类:
- ① 实体类Book:
- ② 创建数据库访问层(DAO):
- ③ 创建Service:(这里省略service接口):
- ④ 创建Controller:
- 七、测试:
一、Spring Boot整合JDBCTemplatedbc:
前言:
在使用JDBCTemplate之前,我们先来了解一下JDBC。它是java用于连接数据库的规范,也就是用于执行数据库SQL语句的java API。是由一组用java语言编写的类和接口组成,为大部分关系型数据库提供了访问接口。
而JDBC每次使用前进行数据库的连接,然后处理SQL语句、传值、关闭数据库等,如果都由开发人员编写代码,很容易出错,可能会出现在使用完成以后,数据库连接忘记关闭的情况,从而导致连接被占用降低性能,为了减少这种可能的错误,减少开发人员的工作量,JDBCTemplate就被设计出来了。
Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具。我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码。
当然,在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate或者Spring Data JPA,我们这里讲解JdbcTemplate的整合.
Spring Boot整合JDBCTemplatedbc案例演示:
一、创建数据库:
本人机器上安装的是mysql8.0.22版本:
我们可以创建一个test数据库,然后在test数据库中创建一个表t_book
这里我使用sqlyog,也可以使用navcat等
然后点击保存即可。
二、创建springboot项目:
2.1 创建一个maven项目:springboot-data-jdbc
三、导入jdbc等依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--当前项目的gav坐标-->
<groupId>com.example</groupId>
<artifactId>springboot-data-jdbc</artifactId>
<version>1.0-SNAPSHOT</version>
<!--默认打包方式jar,可以不写-->
<packaging>jar</packaging>
<dependencies>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.5.0</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!--springboot-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.0</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!--slf4j日志,不导入会报错-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
</dependencies>
</project>
总结:JDBCTemplate必须的两个依赖是spring-boot-starter-jdbc和mysql-connector-java。
四、application.yml(配置数据库的连接信息):
创建yml文件:
spring:
#jdbc数据源,和pom配合使用,四项
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
注意mysql8的url需要添加时区, driver-class-name也mysql5也不同。
五、写主启动类:
创建主启动类: com.example.SpringbootDataJdbcMain
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootDataJdbcMain {
public static void main(String[] args) {
SpringApplication.run(SpringbootDataJdbcMain.class,args);
}
}
然后就可以启动测试了。看控制台有无报错信息。
六、业务类:
① 实体类Book:
domain.Book:
package com.example.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book{
private int id;
private String name;
private String author;
public Book(String name,String author){
this.name = name;
this.author = author;
}
}
② 创建数据库访问层(DAO):
dao.BookDao
@Repository
public class BookDao {
@Autowired
JdbcTemplate jdbcTemplate;
public int addBook(Book book) {
return jdbcTemplate.update("insert into t_book(name,author) values (?,?)",book.getName(),book.getAuthor());
}
public int updateBook(Book book) {
return jdbcTemplate.update("update t_book set name = ?,author = ? where id = ?" ,book.getName(),book.getAuthor(),book.getId());
}
public int deleteBook(Integer id) {
return jdbcTemplate.update("delete from t_book where id = ?",id);
}
public Book getBookById(Integer id) {
return jdbcTemplate.queryForObject("select * from t_book where id = ?",new BeanPropertyRowMapper<>(Book.class),id);
}
public List<Book> getAllBooks() {
return jdbcTemplate.query("select * from t_book",new BeanPropertyRowMapper<>(Book.class));
}
}
注意:我们这里注入了一个bean:JdbcTemplate ,这个JdbcTemplate是springboot帮我们自动配置好的bean,我们拿来用就好了。
在jdbcTemplate中,增删改操作主要使用update和batchUpdate方法来完成的。
query和queryForObject方法主要来完成查询的功能。
③ 创建Service:(这里省略service接口):
BookService:
package com.example.service;
import com.example.dao.BookDao;
import com.example.domain.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
@Autowired
private BookDao bookDao;
public int addBook(Book book) {
return bookDao.addBook(book);
}
public int updateBook(Book book) {
return bookDao.updateBook(book);
}
public int deleteBook(Integer id) {
return bookDao.deleteBook(id);
}
public Book getBookById(Integer id) {
return bookDao.getBookById(id);
}
public List<Book> getAllBooks() {
return bookDao.getAllBooks();
}
}
④ 创建Controller:
controller.BookController:
package com.example.controller;
import com.example.domain.Book;
import com.example.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping(value = "/addBook")
public String addBook() {
Book book = new Book("数据库","李四");
int result = bookService.addBook(book);
if(result >0) {
return "数据插入成功";
}else {
return "数据插入失败";
}
}
@RequestMapping(value = "/getBookById")
public Book getBookById(Integer id){
try {
Book bookresult = bookService.getBookById(id);
if(bookresult != null) {
return bookresult;
}else {
return null;
}
}catch (Exception e) {
return null;
}
}
@RequestMapping(value = "/getBooksList")
public List<Book> getBooksList() {
return bookService.getAllBooks();
}
}
七、测试:
测试:插入数据库
测试查询数据库:
查询所有: