🍁博客主页:👉不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉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.h2database</groupId>
<artifactId>h2</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:
h2:
console:
path: /h2
enabled: true
运行项目,在网页进行访问,连接之后,发现连接异常,因为首次使用的原因,只需要在配置文件中配置相应的数据源就ok了,重新启动成功后,这些配置可以删除,也可以留着。
server:
port: 80
spring:
h2:
console:
path: /h2
enabled: true
datasource:
url: jdbc:h2:~/test
hikari:
driver-class-name=com: org.h2.Driver
username: sa
password: 123456
🔥运行项目
🔥 输入密码登录
🔥添加一个表
🔥添加数据后,查询表信息
🔥 测试
@Test
void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){
String sql="insert into tbl_book values(3,'斗罗大陆','科幻','左手蓝银草右手昊天锤')";
jdbcTemplate.update(sql);
}
⭐⭐⭐注意:
H2内置数据库这仅仅用于开发阶段,线上项目请务必关闭控制台功能