SpringBoot - 数据库操作之 JdbcTemplate 基本使用

一、什么是 JdbcTemplate

  • JdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术来解决直接使用JDBC时大量重复代码的问题。
  • JdbcTemplate虽然没有MyBatis那么灵活,但是比直接使用JDBC要方便很多

二、安装配置

1、在 pom.xml 文件中添加如下依赖

  • spring-boot-starter-jdbc:提供对 JDBC 数据库的支持
  • mysql-connector-java:MySQL 数据库驱动
  • hikari:SpringBoot 自带了 hikari 连接池,不用单独添加依赖。
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

2、在 application.properties 中配置数据库连接信息

# 数据库账号
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
#数据源
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# 数据驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

三、创建表及实体类

1、创建表结构如下

CREATE TABLE `book` (
`id`     int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name`   varchar(20) NULL ,
`author` varchar(20) NULL 
);

2、实体类

public class Book {

    private Integer id;

    private String name;

    private String author;


    // 省略 getter 和 setter 方法
}

3、创建数据访问层


@Repository
public class BookDao {

    @Resource
   private JdbcTemplate jdbcTemplate;

    //新增
    public int add(Book book){

        return jdbcTemplate.update("insert into `book`(`name`, `author`) values(?, ?)",
                book.getName(), book.getAuthor());
    }
    // 更新
    public int update(Book book){

        return jdbcTemplate.update("update `book` set `name` = ?, `author` = ? where `id` = ? ",
                book.getName(), book.getAuthor(), book.getId());
    }
    // 删除
    public int deleteById(Integer id){
        return jdbcTemplate.update("delete from `book` where `id` = ?", id);
    }

    // 查询所有
    public List<Book> selectAll(){
       return jdbcTemplate.query("select `id`, `name`, `author` from `book`",
                new BeanPropertyRowMapper<>(Book.class));
    }
    // 根据ID查询一个
    public Book selectById(Integer id){
        return jdbcTemplate.queryForObject("select `id`, `name`, `author` from `book` where id = ? ",
                new BeanPropertyRowMapper<>(Book.class), id);
    }

}

(1)由于前面我们已经添加了 spring-jdbc 相关的依赖,JdbcTemplate 会被注册到 Spring 容器中,因此可以直接注入 JdbcTemplate 使用:

  • 增删改三种类型的操作主要使用 update 和 batchUpdate 方法来完成。

  • query 和 queryForObject 方法中主要用来完成查询功能。
  • execute 方法可以用来执行任意的 SQL、call 方法来调用存储过程。
(2)在执行查询操作时,需要有一个 RowMapper 将查询出来的列和实体类中的属性一一对应起来:
  • 如果列名和属性名都是相同的,那么可以直接使用 BeanPropertyRowMapper
  • 如果列名和属性名不同,就需要开发者自己实现 RowMapper 接口,将列和实体类属性一一对应起来。

 4、创建 Controller

为了方便就不创建 Service 层了,直接在 Controller 层进行访问,Controller 代码如下:


@RestController
public class BookController {

    @Resource
    private BookDao bookDao;

    @PostMapping("/add")
    public String save(@RequestBody Book book){
        return bookDao.add(book) == 1? "保存成功": "保存失败";
    }

    @PutMapping("/update")
    public String update(@RequestBody Book book){
        return bookDao.update(book) == 1? "保存成功": "保存失败";
    }

    @DeleteMapping("/book/{id}")
    public String update(@PathVariable("id") Integer id){
        return bookDao.deleteById(id) == 1? "保存成功": "保存失败";
    }

    @GetMapping("/books")
    public List<Book> queryAll(){
        return bookDao.selectAll();
    }

    @GetMapping("/book/{id}")
    public Book queryOne(@PathVariable("id") Integer id){
        return bookDao.selectById(id);
    }
}

5、运行测试

(1)、新增

(2)、更新

(3)、查询

(3)、删除

猜你喜欢

转载自blog.csdn.net/small_love/article/details/111812690