SpringBoot 内置数据源 Hikari + 持久化技术 JdbcTemplate + 内置数据库 H2 代码示例
- pom.xml引入相关依赖,配置完成要reload此maven工程。
<!--hikari数据源+JdbcTemplate持久化技术+H2数据库-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--JdbcTemplate-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</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配置:
server:
port: 80
spring:
h2:
console:
enabled: true
datasource:
url: jdbc:h2:~/test
driver-class-name: org.h2.Driver
hikari:
username: sa
password: 123456
- 启动此项目,在控制台观察下图所示日志,即为H2数据库的控制台访问地址:
- 访问H2数据库:
- 输入默认密码:123456测试连接并连接:
- 执行建表语句:
- 添加三条数据:
insert into TBL_BOOK values ('1', 'SpringBoot从入门到精通', 'SpringBoot描述', '35.00');
insert into TBL_BOOK values ('2', 'SpringCloud从入门到精通', 'SpringCloud描述', '36.00');
insert into TBL_BOOK values ('3', 'Spring从入门到精通', 'Spring描述', '37.00');
- 查询数据:
- 实体类: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 SpringBootH2DatabaseTest {
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
String sql = "select * from tbl_book";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
System.out.println("queryForList执行结果如下\n"+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("query执行结果如下:\n"+bookList);
}
}
queryForList执行结果如下
[{ID=1, NAME=SpringBoot从入门到精通, DESCRIPTION=SpringBoot描述, PRICE=35.0}, {ID=2, NAME=SpringCloud从入门到精通, DESCRIPTION=SpringCloud描述, PRICE=36.0}, {ID=3, NAME=SprinTBL_BOOK g从入门到精通, DESCRIPTION=Spring描述, PRICE=37.0}]
query执行结果如下:
[Book(id=1, name=SpringBoot从入门到精通, description=SpringBoot描述, price=35.0), Book(id=2, name=SpringCloud从入门到精通, description=SpringCloud描述, price=36.0), Book(id=3, name=Spring从入门到精通, description=Spring描述, price=37.0)]