Spring Boot JDBC 연결 데이터베이스 예제

텍스트 는 spring Boot 에 구 축 된 웹 응용 프로그램 에서 MySQL 데이터베이스 기반 의 몇 가지 데이터베이스 연결 방식 을 소개 합 니 다.
JDBC,JPA,MyBatis,다 중 데이터 소스 와 사 무 를 포함한다.
JDBC 연결 데이터베이스
1.속성 설정 파일(application.properties)

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
JNDI 를 사용 하면 spring.datasource 의 url,username,password 를 대체 할 수 있 습 니 다.예 를 들 어:

spring.datasource.jndi-name=java:tomcat/datasources/example 
특히 Spring Boot 의 기본 DataSource 설정 이 든 자신의 DataSource bean 이 든 외부 속성 파일 의 속성 설정 을 참조 합 니 다.따라서 사용자 정의 DataSource bean 을 가정 하면 bean 을 정의 할 때 속성 을 설정 할 수도 있 고 속성 파일 에서'spring.datasource.*'방식 으로 속성 설정 을 외부 화 할 수도 있 습 니 다.
2,pom.xml 설정 maven 의존

    <!-- MYSQL -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
     </dependency>
     <!-- Spring Boot JDBC -->
     <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
     </dependency>
3.자바 코드 범례
StudentService.java

package org.springboot.sample.service;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springboot.sample.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;

/**
 * Studeng Service
 *
 * @author     (365384722)
 * @create  2016 1 12 
 */
@Service
public class StudentService {

  @Autowired
  private JdbcTemplate jdbcTemplate;

  public List<Student> getList(){
    String sql = "SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE  FROM STUDENT";
    return (List<Student>) jdbcTemplate.query(sql, new RowMapper<Student>(){

      @Override
      public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
        Student stu = new Student();
        stu.setId(rs.getInt("ID"));
        stu.setAge(rs.getInt("AGE"));
        stu.setName(rs.getString("NAME"));
        stu.setSumScore(rs.getString("SCORE_SUM"));
        stu.setAvgScore(rs.getString("SCORE_AVG"));
        return stu;
      }

    });
  }
}

Student.java 실체 클래스

package org.springboot.sample.entity;

import java.io.Serializable;

/**
 *     
 *
 * @author     (365384722)
 * @create  2016 1 12 
 */
public class Student implements Serializable{

  private static final long serialVersionUID = 2120869894112984147L;

  private int id;
  private String name;
  private String sumScore;
  private String avgScore;
  private int age;

  //       ,get set     
}

StudentController.java

package org.springboot.sample.controller;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springboot.sample.entity.Student;
import org.springboot.sample.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/stu")
public class StudentController {

  private static final Logger logger = LoggerFactory.getLogger(StudentController.class);

  @Autowired
  private StudentService studentService;

  @RequestMapping("/list")
  public List<Student> getStus(){
    logger.info("      Student  ");
    return studentService.getList();
  }
}

본 고 는 공사 에 파일 을 추가 한 후 공사 구조 도:
这里写图片描述
그리고 프로젝트 를 시작 하고 주소 에 접근 합 니 다:http://localhost:8080/myspringboot/stu/list 응답 결 과 는 다음 과 같 습 니 다.

[
{
id: 1,
name: "  ",
sumScore: "252",
avgScore: "84",
age: 1
},
{
id: 2,
name: "  ",
sumScore: "187",
avgScore: "62.3",
age: 1
},
{
id: 3,
name: "  ",
sumScore: "",
avgScore: "",
age: 0
},
{
id: 4,
name: "  ",
sumScore: "230",
avgScore: "76.7",
age: 1
},
{
id: 5,
name: "  ",
sumScore: "",
avgScore: "",
age: 0
},
{
id: 6,
name: "  ",
sumScore: "0",
avgScore: "0",
age: 1
}
]

연결 풀 설명
Tomcat 7 이전 에는 DBCP 연결 풀 기술 로 구현 되 는 JDBC 데이터 원본 을 Tomcat 본질 적 으로 적 용 했 으 나,Tomcat 7 이후 에는 DBCP 의 교체 또는 예비 방안 으로 기 존 에 DBCP 를 사용 하 던 불 이익 을 많이 해결 하고 성능 을 높 였 다.
Spring Boot 는 우리 에 게 가장 좋 은 데이터베이스 연결 탱크 방안 을 준 비 했 습 니 다.속성 파일(예 를 들 어 application.properties)에 필요 한 연결 탱크 인 자 를 설정 하면 됩 니 다.
저 희 는 Tomcat 데이터 원본 연결 탱크 를 사용 합 니 다.tomcat-jdbc 에 의존 해 야 합 니 다.응용 프로그램 에 spring-boot-starter-jdbc 나 spring-boot-starter-data-jpa 의존 을 추가 하면 걱정 할 필요 가 없습니다.tomcat-jdbc 의존 을 자동 으로 추가 하기 때 문 입 니 다.
만약 우리 가 다른 방식 의 연결 탱크 기술 을 사용 하고 싶다 면,자신의 DataSource bean 을 설정 하면 Spring Boot 의 자동 설정 을 덮어 쓸 수 있 습 니 다.
제 데이터 원본 설정 을 보십시오:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800
spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)

연결 탱크 를 배치 한 개발 자 들 은 이러한 속성의 의 미 를 모두 알 고 있다.
DEBUG 로그 출력 을 엽 니 다.logback.xml 에 추가:

<logger name="org.springframework.boot" level="DEBUG"/>
그리고 항목 을 시작 합 니 다.로그 출력 을 주의 깊 게 관찰 하 십시오.다음 그림 에서 연결 풀 을 자동 으로 사용 하 는 것 이 표 시 됩 니 다.
这里写图片描述  
저 는 위의 데이터 원본 설정 에 필 터 를 추가 하고 지연 시간 을 0 으로 설정 하 였 습 니 다(의도 적 으로 낮 게 설정 하 였 습 니 다.실제 항목 에서 수정 하 십시오).

spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)
이때 우 리 는 방문 했다.http://localhost:8080/myspringboot/stu/list 로 그 를 관찰 하면 프레임 워 크 가 이 시간 보다 큰 데이터 조회 로 경고 출력 을 하 는 것 을 발견 할 수 있 습 니 다.다음 과 같 습 니 다.

2016-01-12 23:27:06.710  WARN 17644 --- [nio-8080-exec-1] o.a.t.j.p.interceptor.SlowQueryReport    : Slow Query Report SQL=SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE   FROM STUDENT; time=3 ms;
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기