Spring Boot JDBC 연결 데이터베이스 예제
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;
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.