SpringBoot内置数据源的持久化如何解决
本文小编为大家详细介绍“SpringBoot内置数据源的持久化如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot内置数据源的持久化如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
数据层解决方案
SQL
NoSQL
与SQL有关的解决方案
现有数据层解决方案技术选型
Druid + MyBatis-Plus + MySQL
数据源:DruidDataSource
持久化技术:MyBatis-Plus / MyBatis
数据库:MySQL
SpringBoot提供了3种内嵌的数据源对象供开发者选择
HikariCP
Tomcat提供DataSource
Commons DBCP
平常做项目时我所需要的maven坐标
数据源
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
持久化技术
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
数据库
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency>
springboot中的数据源
若不提供数据源(例如删除上面的Druid的坐标,就默认使用这三种中的一种(HikariCP默认)
HikariCP:默认内置数据源对象
Tomcat提供DataSource: HikariCP不可用的情况下,且在web环境中,将使用tomcat服务器配置的数据源对象
Commons DBCP: Hikari不可用,tomcat数据源也不可用,将使用dbcp数据源
删掉durid的maven坐标,将数据源换成HikariCP
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
hikari:
driver-class-name=com: com.mysql.cj.jdbc.Driver
username: root
password: root
内置持久化解决方案
导入坐标
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
编写测试类:
package com.jkj; import com.jkj.dao.BookDao; import com.jkj.domian.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; @SpringBootTest class Springboot09SqlApplicationTests { /*@Autowired private BookDao bookDao;*/ /*@Test void contextLoads() { *//*bookDao.selectById(2);*//* }*/ @Autowired private JdbcTemplate jdbcTemplate; @Test void JDBCTEST() { // jdbcTemplate.update();//增删改 // jdbcTemplate.query(); //查询 // jdbcTemplate.queryForObject();//查询单个对象 /* 一般不使用这种格式 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 resultSet, int i) throws SQLException { // ResultSet resultSet 其实就是结果集 Book temp = new Book(); temp.setId(resultSet.getInt("id")); temp.setName(resultSet.getString("name")); temp.setType(resultSet.getString("type")); temp.setDescription(resultSet.getString("description")); return temp; } }; String sql = "select * from tbl_book "; List<Book> list = jdbcTemplate.query(sql, rm); System.out.println(list); } }
JdbcTemplate的其它配置
spring:
jdbc:
template:
query-timeout: -1 #查询超时时间
max-rows: 500 #最大行数
fetch-size: -1 #缓存行数
Springboot内置数据库
SpringBoot提供了3种内嵌数据库供开发者选择,提高开发测试效率
H2
HSQL
Derby
导入依赖;
<dependency> <groupId>com.h3database</groupId> <artifactId>h3</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
配置H2管理控制台参数
server:
port: 80
spring:
h3:
console:
path: /h3
enabled: true
运行项目,在网页进行访问,连接之后,发现连接异常,因为首次使用的原因,只需要在配置文件中配置相应的数据源就ok了,重新启动成功后,这些配置可以删除,也可以留着。
server:
port: 80
spring:
h3:
console:
path: /h3
enabled: true
datasource:
url: jdbc:h3:~/test
hikari:
driver-class-name=com: org.h3.Driver
username: sa
password: 123456
运行项目
输入密码登录
添加一个表
添加数据后,查询表信息
测试
@Test void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){ String sql="insert into tbl_book values(3,'斗罗大陆','科幻','左手蓝银草右手昊天锤')"; jdbcTemplate.update(sql); }
注意: H2内置数据库这仅仅用于开发阶段,线上项目请务必关闭控制台功能
读到这里,这篇“SpringBoot内置数据源的持久化如何解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注蜗牛博客行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论