当前位置: 首页 > news >正文

SpringBoot07-数据层的解决方案:SQL

一、内置数据源

1-1、【回顾】Druid数据源的配置

druid的两种导入格式

1-2、springboot提供的3种内置数据源的配置

若是不配置Druid, springboot提供了3中默认的数据源配置,它们分别是:


1. HikariCP默认

  • 从 Spring Boot 2.0 开始的默认数据源

  • 性能优秀,轻量级,响应速度快,社区活跃

  • 推荐在生产环境中使用

配置示例(application.yml.properties):

【注意】:

一般,默认的数据源的配置就是用的 Hikari数据源!

常用属性:

  • maximum-pool-size: 最大连接数

  • minimum-idle: 最小空闲连接数

  • connection-timeout: 连接超时时间(毫秒)


2. Apache Commons DBCP2

Hikari不可用,tomcat数据源也不可用。

  • 是 Apache Commons 提供的连接池实现

  • 比 HikariCP 稍重,性能略低一些

配置方式:


3. Tomcat JDBC Connection Pool

Hikari不可用,且在web环境中,将使用Tomcat服务器配置的数据源对象!

  • Spring Boot 内部默认依赖于 Tomcat,所以这个连接池和 Spring Boot 集成良好

  • 性能也不错,但 HikariCP 更优

配置方式:


4、切换数据源类型的方法

(1)、通过配置:
spring.datasource.type=xxx

可选值包括:

  • com.zaxxer.hikari.HikariDataSource

  • org.apache.commons.dbcp2.BasicDataSource

  • org.apache.tomcat.jdbc.pool.DataSource

(2)、通过具体设置

二、springboot内置持久化的解决方案:jdbcTemplate

1、导入相关依赖

<!-- spring-boot-starter-jdbc 默认就包含了 JdbcTemplate -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

【注意】:

spring-boot-starter-jdbc中默认使用的是hikari数据源! 

2、配置 application.ymlapplication.properties中的数据库连接信息

3、使用 JdbcTemplate

Spring Boot 会自动将 JdbcTemplate 注册为 Bean,只需注入即可:

【注意】:

1、如果你不确定一定有数据,不要使用 queryForObject,否则查不到数据会报错 

2、默认支持下划线转驼峰映射

4、常用方法:

方法说明
update(String sql, Object... args)执行 insert、update、delete
query(String sql, RowMapper<T> rowMapper)查询多个结果
queryForObject(String sql, RowMapper<T> rowMapper, Object... args)查询单个结果(查不到报错
batchUpdate(String sql, List<Object[]>)批量更新
queryForList(String sql)查询返回 List<Map<String, Object>>

5、使用RowMapper,手动映射

6、spring中jdbcTemplate中的应用,参考文章:

spring07-JdbcTemplate操作数据库-CSDN博客

三、内置数据库

都是用java写的

都能在内存中运行,测试方便

都十分轻巧 

2-1、内嵌数据库H2

1、导入数据库相关依赖

【注意】:

此时点击test connection会报错:初始化错误,需要在application.yml中配置如下:

启动项目后,刷性页面,再次点击test connection即可,此时即使把application.yml中配置的配置在删掉也不影响了。

使用h2创建一张表:tbl_book:

编写操作数据库的代码1:jdbcTemplate

@SpringBootTest
public class BookJdbcTest {@Autowiredprivate JdbcTemplate jdbcTemplate;@Testpublic void testBookSave(){String sql = "insert into TBL_BOOK (id, type, name, description) values (2, 'springboot2', 'springboot2', 'springboot2')";jdbcTemplate.update(sql);}@Testpublic void testSelect(){String sql= "select * from tbl_book";List<Book> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Book.class));query.forEach(System.out::println);}}

操作数据库代码2:mybatis-plus

@SpringBootTest
public class BookMybatisPlusTest {@Autowiredprivate IBookService bookService;@Testpublic void testSave(){Book book = new Book();book.setId(3);book.setName("springboot3");book.setType("springboot3");book.setDescription("springboot3");bookService.save(book);}@Testpublic void testSelect(){Book book = bookService.getById(3);System.out.println(book);}}

 

http://www.dtcms.com/a/294609.html

相关文章:

  • 【科研绘图系列】R语言绘制黑白填充等显著性标记条形图
  • 华为仓颉编程语言实践体验
  • 基于Springboot的中药商城管理系统/基于javaweb的中药材销售系统
  • 海外短剧系统开发:技术架构与市场机遇深度解析
  • 华为7月23日机考真题
  • 华为高频算法题:最长连续递增子序列(Longest Continuous Increasing Subsequence)
  • 【JVM】从 JVM 整体说明 JVM 运行的完整流程
  • Redis MCP 安装与配置完整指南
  • 83、设置有人DTU设备USR-M100采集传感器数据,然后上传阿里云服务
  • 卷积神经网络:模型评估标准
  • Qt容器类:QList、QMap等的高效使用
  • 2025年7月份实时最新获取地图边界数据方法,省市区县街道多级联动【文末附实时geoJson数据下载】
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三十一课——车牌识别的FPGA实现(3)车牌字符分割预处理
  • 从零开始学习Dify-Excel数据可视化(四)
  • PHP面向对象高级应用:依赖注入、服务容器与PSR标准实现
  • STL学习(四、队列和堆栈)
  • CSP-J系列【2023】P9751 [CSP-J 2023] 旅游巴士题解
  • 变频器实习DAY12
  • 接入海康设备mark全是false解决方案
  • Elasticsearch整合:Repository+RestClient双模式查询优化
  • 【杂谈】-代理协议:重塑AI协作新生态,开启智能互联新时代
  • 开闭原则在C++中的实现
  • InfluxDB HTTP API 接口调用详解(二)
  • [HarmonyOS] 鸿蒙LiteOS-A内核深度解析 —— 面向 IoT 与智能终端的“小而强大”内核
  • 算法第27天|贪心算法:合并区间 、单调递增的数字
  • 面试实战,问题七,Object类中包含哪些常用方法及其作用,怎么回答
  • biji 1
  • 开源 Arkts 鸿蒙应用 开发(十)通讯--Http数据传输
  • RAG深入理解和简易实现
  • Linux基础服务(Crontab和NFS)