Spring Boot整合JdbcTemplate访问数据库

Posted 五星村小黄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot整合JdbcTemplate访问数据库相关的知识,希望对你有一定的参考价值。

这篇文章是介绍 Spring Boot整合JdbcTemplate,配置数据源来访问数据库。


在pom文件里添加 spring-boot-starter-jdbc 和mysql依赖。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.21</version>
</dependency>


配置数据源 :在 src/main/resources/application.properties 中配置数据源信息
```
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_demo
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```

建表:
```
DROP TABLE IF EXISTS Student;

CREATE TABLE Student (
  id int(5) NOT NULL,
  name varchar(60) NOT NULL,
  age int(2) NOT NULL,
  score double(5,2) NOT NULL,
  PRIMARY KEY (id)
) ;

启动类:

package cn.yideng;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableAutoConfiguration
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}


实体类:

public class Student {

  private int id;
  private String name;
  private int age;
  private double score;

  public Student() {}

  public Student(int id, String name, int age, double score) {
    this.id = id;
    this.name = name;
    this.age = age;
    this.score = score;
  }

// 省略 getter/setter, toString
}

service:

public interface StudentService {

  // 新增
  void create(Student student);

  // 查询所有记录
  List<Student> getAll();

  // 删除所有
  void deleteAllUsers();

  // 根据id修改
  void updateById(Student s);

  // 根据ID查询
  Student getOneById(int id);

}

service实现类:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service(value="studentService")
public class StudentServiceImpl implements StudentService{

  @Autowired
  private JdbcTemplate jdbcTemplate;

  @Override
  public void create(Student s) {
    String sql = "insert into STUDENT(ID, NAME, AGE, score) values(?, ?, ?, ?)";
    jdbcTemplate.update(sql, s.getId(), s.getName(), s.getAge(), s.getScore());
  }

  @Override
  public List<Student> getAll() {
    String sql = "select * from STUDENT ";
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(Student.class));
  }

  @Override
    public void deleteAllUsers() {
    String sql = "delete from STUDENT";
    jdbcTemplate.execute(sql);
  }

  @Override
  public void updateById(Student s) {
    String sql = "update STUDENT set name=?, age=?, score=? where id=?";
    jdbcTemplate.update(sql, new Object[]{s.getName(), s.getAge(), s.getScore(), s.getId()});
  }

  @Override
  public Student getOneById(int id) {
    String sql = "select * from STUDENT where id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(Student.class));
  }

}

使用JUnit测试,在pom文件里先添加依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

写测试类,

import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;


@RunWith(SpringRunner.class)
@SpringBootTest(classes=DemoApplication.class)
@WebAppConfiguration
public class JdbcTest {

  @Autowired
  private StudentService studentService;

  @Test
  public void test() throws Exception {

  // 先删除所有数据
  studentService.deleteAllUsers();

  Student s1 = new Student(1001, "andy lau", 11, 80.00);
  Student s2 = new Student(1002, "lucy 1", 12, 85.00);
  Student s3 = new Student(1003, "lily", 13, 75.00);
  Student s4 = new Student(1004, "tom kk", 14, 94.00);
  studentService.create(s1);
  studentService.create(s2);
  studentService.create(s3);
  studentService.create(s4);

  // 查询所有
  List<Student> stuList = studentService.getAll();
  for(Student stu : stuList){
    System.out.println(stu);
  }

  // 根据ID查询
  Student stu = studentService.getOneById(1003);
  System.out.println("---update 前----" + stu);
  stu.setName("lily Green");
  stu.setScore(90.00);
  // 根据id修改
  studentService.updateById(stu);
  System.out.println("---update 后----" + stu);

  }
}



 












































































































































































以上是关于Spring Boot整合JdbcTemplate访问数据库的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 系列之三:spring boot 整合JdbcTemplate

Spring Boot 整合JDBCTemplate

spring boot与jdbcTemplate的整合案例2

spring-boot-route整合jdbcTemplate操作数据库+整合mybatis操作数据库

jeecgboot整合JdbcTemplate方便多表联合查询

springboot 整合jdbcTemplate