016-Spring Boot JDBC
一、数据源装配
通过查看代码可知,默认已装配了数据源和JdbcTemplate
System.out.println(context.getBean(DataSource.class));
System.out.println(context.getBean(JdbcTemplate.class));
1.1、环境搭建
主要是pom引用:spring-boot-starter-jdbc、增加数据库驱动
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.lhx.spring</groupId>
<artifactId>springboot-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springboot-web</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
</project>
查看spring-boot-autoconfigure-1.5.9.RELEASE.jar包下的org.springframework.boot.autoconfigure.jdbc下的DataSourceProperties其实所有的都是类似的配置
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties
implements BeanClassLoaderAware, EnvironmentAware, InitializingBean {
可以看到默认读取spring.datasource开头的配置。
1.2、配置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
1.3、使用
public static void main(String[] args) throws SQLException {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
dataSource = context.getBean(DataSource.class);
Connection connection = dataSource.getConnection();
System.out.println(connection.getCatalog());
}
二、JdbcTemplate
在配置好基本配置后,JdbcTemplate就可以使用了
@Repository
public class ProductDao {
@Autowired
private JdbcTemplate jdbcTemplate; public void addProdcut(String value) {
String sql = "insert into product(pname) values('" + value + "')";
jdbcTemplate.execute(sql);
}
}
调用
public class App {
public static void main(String[] args) throws SQLException {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(ProductDao.class).addProdcut("mp3");
connection.close();
}
}
三、切换数据源
System.out.println(context.getBean(DataSource.class));
查看到使用的是默认提供的:org.apache.tomcat.jdbc.pool.DataSource数据源
方式一、排除添加切换
1》排除掉tomcat-jdbc
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
2》添加新的数据源
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
方式二、type配置数据源切换
3.2.1、原理查看
查看spring-boot-autoconfigure-1.5.9.RELEASE.jar包下的org.springframework.boot.autoconfigure.jdbc下的DataSourceProperties的配置
使用type指定【private Class<? extends DataSource> type;】在application.properties中
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
默认支持以下几种数据源类型,查看spring-boot-autoconfigure-1.5.9.RELEASE.jar包下的org.springframework.boot.autoconfigure.jdbc下的DataSourceAutoConfiguration
DataSourceConfiguration.Tomcat.class
DataSourceConfiguration.Hikari.class
DataSourceConfiguration.Dbcp.class
DataSourceConfiguration.Dbcp2.class
DataSourceConfiguration.Generic.class
3.2.2、具体步骤
1》添加对应数据源pom
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
2》使用配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
3.3、配置自定义数据源
1》添加POM依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
2》、增加DBConfiguration配置类
package com.lhx.spring.springboot_web; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment; import com.alibaba.druid.pool.DruidDataSource; @SpringBootConfiguration
public class DBConfiguration { @Autowired
private Environment env; @Bean
public DataSource createDataSource() {
DruidDataSource source = new DruidDataSource();
source.setUrl(env.getProperty("spring.datasource.url"));
source.setUsername(env.getProperty("spring.datasource.username"));
source.setPassword(env.getProperty("spring.datasource.password"));
source.setDriverClassName(env.getProperty("spring.datasource.driverClassName"));
return source;
}
}
四、事务
4.1、配置开启
1、在入口app增加注解
@EnableTransactionManagement
2、在需要事务的公有方法上添加注解
@Transactional
示例
@Transactional
public void addProdcutBatch(String... names) throws Exception {
for (String name : names) {
String sql = "insert into product(pname) values('" + name + "')";
jdbcTemplate.execute(sql);
if ("".equals("")) {
throw new NullPointerException();
}
}
}
注意:spring事务,默认支持运行时异常,即RunTimeException,非运行时异常不会回滚
4.2、设置针对哪些异常使用事务
默认是运行时
设置所有异常
@Transactional(rollbackFor=Exception.class)
设置哪些异常不回滚
@Transactional(noRollbackFor=NullPointerException.class)
注意点:
1、要想使用事务生效,被调用的方法必须有Transactional 注解,对于内部调用方法有无注解无影响
2、需要数据库支持事务。
016-Spring Boot JDBC的更多相关文章
- (转) Spring Boot JDBC 连接数据库
文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. 1 JDBC 连接数据库 1.1 属性配 ...
- Spring Boot JDBC 连接数据库
文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. JDBC 连接数据库 1.属性配置文件( ...
- Spring boot + jdbc学习笔记
pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- Spring Boot JDBC:加载DataSource过程的源码分析及yml中DataSource的配置
装载至:https://www.cnblogs.com/storml/p/8611388.html Spring Boot实现了自动加载DataSource及相关配置.当然,使用时加上@EnableA ...
- Spring Boot JDBC 使用教程
总是要用到数据库的嘛,曾经我一度以为,写代码,编程就是搞数据库增删改查,甚至你设计一个系统,大部分时候在为如何设计关系型数据库努力,究其原因,是因为关系型数据库是逻辑的主要呈现. 这个系列,主要是对 ...
- Spring Boot: Jdbc javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
jdbc:mysql://127.0.0.1:3306/xxx?useSSL=false 在后面添加?useSSL=false即可 参考网站
- 10. Spring Boot JDBC 连接数据库
转自:https://blog.csdn.net/catoop/article/details/50507516
- Quartz与Spring Boot集成使用
上次自己搭建Quartz已经是几年前的事了,这次项目中需要定时任务,需要支持集群部署,想到比较轻量级的定时任务框架就是Quartz,于是来一波. 版本说明 通过搜索引擎很容易找到其官网,来到Docum ...
- Spring Boot 系列教程4-JDBC
JDBC Java Data Base Connectivity,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.不管是Hibe ...
- (转) Spring Boot MyBatis 连接数据库
最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...
随机推荐
- nodeJs-autoMerge
/** * Created by Administrator on 2016/1/16. */ var fs = require('fs'); var filedir='automay'; conso ...
- 【转】 从输入 URL 到页面加载完成的过程中都发生了什么事情?
该问题总结 一. 往浏览器输入URL后给你一个页面,你天天在使用的东西,学过计算机网络的知道是怎么回事,就DNS解析然后页面的回馈,不过要讲好还是有难度. 之前fex团队的nwind专门写过这个问题的 ...
- lodash 数组元素查找 findIndex
_.findIndex(array, [predicate=_.identity]) 这个方法类似 _.find.除了它返回最先通过 predicate 判断为真值的元素的 index ,而不是元素本 ...
- USB驱动 | win10下使用console线错误代码10解决办法
驱动安装后如果无法使用,错误代码10, 原因:系统自动安装了新版本的驱动,回滚到老版本即可
- storm - 经常使用命令
1.提交Topologies 命令格式:storm jar [jar路径] [拓扑包名.拓扑类名][stormIP地址][stormport][拓扑名称][參数] eg: storm jar /hom ...
- PHP设置会话(Session)超时过期时间实现登录时间限制
最近某个PHP项目用到了限制登录时间的功能,比如用户登录系统60分钟后如果没有操作就自动退出,我搜索了网络收集了有以下方法可供参考. 第一种方法即设置php.ini配置文件,设置session.gc_ ...
- 炒美股史考特(Scottrade)开户准备及如何获取免费交易(最新2017版)
最新美股史考特(Scottrade)开户及汇款攻略 (2017 年 6 月) 一 前言 二 开户流程 三 激活账户 四 转账汇款 五 小结 一 前言:为什么选择史考特(Scottrade ...
- PyQt5 GUI Programming With Python 3.6 (一)
PyQt5 PyQt5是一个基于强大的图形程式框架Qt5的python接口, 主要包含以下几个大类: ● QtCore ● QtGui ● QtWidgets ● QtMultimedia ● QtB ...
- 什么是CouchDB?
※本文对CouchDB的解释是来自Apache CouchDB的官网的译文,如果有什么问题,请指正. 1.CouchDB简介 CouchDB是一种利用JSON文件,javascript作为MapRed ...
- Unity3D - 性能优化之Draw Call
Unity3D - 性能优化之Draw Call 分类: Unity 3D2012-09-13 11:18 1002人阅读 评论(0) 收藏 举报 性能优化引擎测试脚本图形算法 Unity(或者说基本 ...