Spring Boot 集成数据库
(一)操作数据库
1.在pom.xml
中引入相关的依赖
<!-- 添加对jdbc 的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- 添加数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
2.在application.properties
全局配置文件中设置数据库的相关配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=1234
3.测试代码(入口类)
/** 入口类 */
@SpringBootApplication(scanBasePackages = "com.jas")
public class SpringbootApplication { public static void main(String[] args) throws Exception{ConfigurableApplicationContext context = SpringApplication.run(SpringbootApplication.class, args);System.out.println(context.getBean(DataSource.class).getClass());System.out.println(context.getBean(DataSource.class).getConnection());}
}
控制台输出
class org.apache.tomcat.jdbc.pool.DataSource
ProxyConnection[PooledConnection[com.mysql.jdbc.JDBC4Connection@511505e7]]
从上面的输出可以看出Spring Boot 默认使用的是tomcat 的数据源。
(二)自定义数据源
这里我们以c3p0 数据源为例,有两种配置数据源的方式,分别是:在全局配置文件中进行设置与使用配置类。
2.1在全局配置文件中配置
1.首先在pom.xml
中引入c3p0 的依赖
<!-- 添加c3p0 数据源的依赖 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency>
2.在application.properties
中配置数据库信息与c3p0 数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=1234spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource
启动入口类控制台输出
class com.mchange.v2.c3p0.ComboPooledDataSource
com.mchange.v2.c3p0.impl.NewProxyConnection@64d43929
2.2使用配置类
1.在pom.xml
中引入c3p0 的依赖
2.在application.properties
中配置数据库信息,也可以写一个配置文件单独封装这些信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=1234
3.配置类
@SpringBootConfiguration
public class DatasourceConfiguration {/*** environment 用于读取`application.properties` 配置文件中的配置信息*/@Autowiredprivate Environment environment;@Beanpublic DataSource createDataSource() throws Exception {ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass(environment.getProperty("spring.datasource.driver-class-name"));dataSource.setJdbcUrl(environment.getProperty("spring.datasource.url"));dataSource.setUser(environment.getProperty("spring.datasource.username"));dataSource.setPassword(environment.getProperty("spring.datasource.password"));return dataSource;}
}
(三)事务管理
在Spring Boot 中使用事务,需要在入口类中使用@EnableTransactionManagement
注解启用事务。
对需要进行事务管理的方法加上@Transactional
注解。
PS:需要注意的是 @Transactional
注解默认只会对运行时异常(RuntimeException
)起作用,对于I/O 等其他异常不起作用。对于其他方式的异常,Spring Boot 在@Transactional
注解中提供了rollbackFor
与noRollbackFor
选项,可以让我们自定义对异常的回滚。
/*** rollbackFor 设置回滚的异常,Exception 可以回滚所有的异常,* noRollbackFor 设置不回滚事务的异常*/`@Transactional `(rollbackFor = Exception.class, noRollbackFor = NullPointerException.class )
另一个地方需要注意的是:在同一个类中一个没有设置注解的方法调用有注解的方法时,事务不生效。
Spring Boot 集成数据库相关推荐
- Spring Boot 集成 Flyway 实现数据库版本控制
在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表.在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?如何在测试/生产服务器上快速 ...
- Spring Boot集成Quartz动态实现数据库任务
1. Quartz简介 1.1. 什么是Quartz Quartz是一个开源的任务调度框架.作用是基于定时.定期的策略来执行任务. 它是OpenSymphony开源组织在Job scheduling领 ...
- 6.3 Spring Boot集成mongodb开发
6.3 Spring Boot集成mongodb开发 本章我们通过SpringBoot集成mongodb,Java,Kotlin开发一个极简社区文章博客系统. 0 mongodb简介 Mongo 的主 ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- Spring Boot集成JPA的Column注解命名字段无效的问题
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userNam ...
- Kafka 入门和 Spring Boot 集成
2019独角兽企业重金招聘Python工程师标准>>> Kafka 入门和 Spring Boot 集成 概述 kafka 是一个高性能的消息队列,也是一个分布式流处理平台(这里的流 ...
- Spring Boot 集成 Druid 监控数据源
关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 Druid 介绍 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 ...
- Spring Boot 集成 Mybatis 实现双数据源
转载自 Spring Boot 集成 Mybatis 实现双数据源 这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源 ...
- Spring Boot集成Redis缓存之模拟高并发场景处理
前言 同样我们以上一篇文章为例子,搭建好环境之后,我欧美可以模拟高并发场景下,我们的缓存效率怎么样,到底能不能解决我们实际项目中的缓存问题.也就是如何解决缓存穿透? Spring Boot集成Redi ...
最新文章
- SAP QM初阶之检验批系统状态中的CTCM该如何消除?
- C语言编程时常犯十八个错误
- hive编程指南电子版_第三篇|Spark SQL编程指南
- 5 款可替代 du 命令的工具!
- leetcode-125-Valid Palindrome
- Java基础-异常处理机制
- Storm对DRPC权限控制Version1.0.1
- 获取批量导入数据后,所产生所有自增ID的值
- 从语言模型看Bert的善变与GPT的坚守
- 从java库学设计模式_java I/O库的设计模式
- STM32之红外接收
- 2016 最好的Bootstrap 管理模板
- JS获取屏幕宽度高度
- win7设置视力保护色
- python随机密码生成在26个字母中随机生成10个_习题6:二.3 随机密码生成
- 工具的服务端口已关闭。要使用命令行调用工具,请打开工具 - 设置 - 安全设置,将服务端口开启。
- 以图搜图(一):python aHash算法
- jenkins恢复assign roles
- 关于卸载Google浏览器后无法重装问题
- 无图言屌?YYImage 设计思路,实现细节剖析
热门文章
- Go——cron定时任务Demo
- uni-app——一种通过Nginx反向代理处理302重定向请求解决网络请求中无法获取Cookie的解决方案
- Spring Security——集成Spring Session、Redis和JSON序列化解决方案
- Cython——[FutureWarning: Cython directive ‘language_level’ not set, using 2 for now (Py2)]解决方案
- TensorFlow 教程——电影评论文本分类
- 浙江理工大学电信宽带校园网访问添加路由表命令(2020.10)(Windows和Liunx)
- 华硕老毛子(Padavan)——校园局域网路由表设置(校园网优先局域网访问)
- PHP——Array to string conversion 解决方案
- Recover it!
- 计算机考研只有数据结构,【择校必看】十三所计算机专业课只考数据结构的985院校!...