SpringBoot 内置資料源 Hikari + JdbcTemplate 持久化技術 + MySql 資料庫 代碼示例
- pom中添加相關依賴:
<!--JdbcTemplate-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 配置yml檔案:
spring:
datasource:
# 注:MySQL8.0.28版本
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
username: user
password: 123456
hikari:
maximum-pool-size: 50
- 實體類:Book.java
import lombok.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
private String id;
private String name;
private String description;
private Float price;
}
- 測試類:
import com.example.springboot.entity.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class SpringBootJdbcTemplateTest {
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
String sql = "select * from tbl_book";
// List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
// System.out.println(maps);
RowMapper<Book> rm = new RowMapper<Book>() {
@Override
public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
Book temp = new Book();
temp.setId(rs.getString("id"));
temp.setName(rs.getString("name"));
temp.setDescription(rs.getString("description"));
temp.setPrice(rs.getFloat("price"));
return temp;
}
};
List<Book> bookList = jdbcTemplate.query(sql, rm);
System.out.println(bookList);
}
}
- 輸出結果如下:
queryForList執行結果如下
[{id=1, name=springboot從入門到精通, description=這是一本關于springboot架構的書籍,價格是50元, price=50.0}, {id=2, name=springcloud從入門到精通, description=這是一本關于springcloud架構的書籍,價格是50元, price=50.0}, {id=3, name=spring從入門到精通, description=這是一本關于spring架構的書籍,價格是50元, price=50.0}, {id=4, name=Java從入門到精通, description=這是一本關于Java架構的書籍,價格是50元, price=50.0}, {id=5, name=Mysql從入門到精通, description=這是一本關于Mysql架構的書籍,價格是50元, price=50.0}, {id=6, name=redis從入門到精通, description=這是一本關于redis的書籍,售價為35元, price=35.0}, {id=7, name=mongdb從入門到精通, description=這是一本關于mongdb的書籍,售價為35元, price=35.0}, {id=ebf7259505c246d0c98c61230d7768b2, name=python從入門到精通, description=這是一本python有關的書籍,售價是40元, price=40.23}]
query執行結果如下:
[Book(id=1, name=springboot從入門到精通, description=這是一本關于springboot架構的書籍,價格是50元, price=50.0), Book(id=2, name=springcloud從入門到精通, description=這是一本關于springcloud架構的書籍,價格是50元, price=50.0), Book(id=3, name=spring從入門到精通, description=這是一本關于spring架構的書籍,價格是50元, price=50.0), Book(id=4, name=Java從入門到精通, description=這是一本關于Java架構的書籍,價格是50元, price=50.0), Book(id=5, name=Mysql從入門到精通, description=這是一本關于Mysql架構的書籍,價格是50元, price=50.0), Book(id=6, name=redis從入門到精通, description=這是一本關于redis的書籍,售價為35元, price=35.0), Book(id=7, name=mongdb從入門到精通, description=這是一本關于mongdb的書籍,售價為35元, price=35.0), Book(id=ebf7259505c246d0c98c61230d7768b2, name=python從入門到精通, description=這是一本python有關的書籍,售價是40元, price=40.23)]