前面我們已經使用Spring Boot搭建了一個建大的項目並且向提供了一個rest api供外部調用。這一節我們需要在這個接口中訪問數據庫。
需要準備的環境:mysql
創建表:
create table user(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
ager VARCHAR(40) NOT NULL,
birth_date DATE,
PRIMARY KEY ( id)
);
數據庫連接使用spring提供的JdbcTemplate
pom.xml新增JdbcTemplate依賴。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- alibaba的druid數據庫連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
-
新建DemoService.java類,把application.property改爲application.yml.
- application.yml加入以下內容:
spring:
datasource:
name: test
# 數據庫地址
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&failOverReadOnly=false
# 數據庫賬號
username: root
# 數據庫密碼
password: 123456
# 使用druid數據源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
- service代碼如下:
// 交由是spring管理
@Service
public class DemoService {
// 自動注入JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> test () {
// 查詢表中數據並返回
return jdbcTemplate.queryForList("select * from user");
}
}
- controller中代碼改造
// 依賴注入
@Autowired
private DemoService demoService;
@GetMapping("/test")
public List<Map<String, Object>> test() {
return demoService.test();
}
啓動項目,瀏覽器中輸入: http://localhost:8080/test即可在瀏覽器中看到數據庫中所有表的數據。