目录



  • 一、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如何调用DB2的存储过程 springbootjdbc_java

然后点击保存即可。

二、创建springboot项目:

2.1 创建一个maven项目:springboot-data-jdbc

springboot如何调用DB2的存储过程 springbootjdbc_spring boot_02

springboot如何调用DB2的存储过程 springbootjdbc_数据库_03

三、导入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(配置数据库的连接信息):

springboot如何调用DB2的存储过程 springbootjdbc_spring boot_04


创建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

springboot如何调用DB2的存储过程 springbootjdbc_spring boot_05

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

七、测试:

测试:插入数据库

springboot如何调用DB2的存储过程 springbootjdbc_bc_06

springboot如何调用DB2的存储过程 springbootjdbc_spring_07

测试查询数据库:

springboot如何调用DB2的存储过程 springbootjdbc_bc_08

查询所有:

springboot如何调用DB2的存储过程 springbootjdbc_spring boot_09