一、数据源装配

通过查看代码可知,默认已装配了数据源和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的更多相关文章

  1. (转) Spring Boot JDBC 连接数据库

    文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. 1 JDBC 连接数据库 1.1 属性配 ...

  2. Spring Boot JDBC 连接数据库

    文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. JDBC 连接数据库 1.属性配置文件( ...

  3. Spring boot + jdbc学习笔记

    pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...

  4. Spring Boot JDBC:加载DataSource过程的源码分析及yml中DataSource的配置

    装载至:https://www.cnblogs.com/storml/p/8611388.html Spring Boot实现了自动加载DataSource及相关配置.当然,使用时加上@EnableA ...

  5. Spring Boot JDBC 使用教程

    总是要用到数据库的嘛,曾经我一度以为,写代码,编程就是搞数据库增删改查,甚至你设计一个系统,大部分时候在为如何设计关系型数据库努力,究其原因,是因为关系型数据库是逻辑的主要呈现. 这个系列,主要是对 ...

  6. 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即可 参考网站

  7. 10. Spring Boot JDBC 连接数据库

    转自:https://blog.csdn.net/catoop/article/details/50507516

  8. Quartz与Spring Boot集成使用

    上次自己搭建Quartz已经是几年前的事了,这次项目中需要定时任务,需要支持集群部署,想到比较轻量级的定时任务框架就是Quartz,于是来一波. 版本说明 通过搜索引擎很容易找到其官网,来到Docum ...

  9. Spring Boot 系列教程4-JDBC

    JDBC Java Data Base Connectivity,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.不管是Hibe ...

  10. (转) Spring Boot MyBatis 连接数据库

    最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...

随机推荐

  1. 蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

    ***************************************声明*************************************** 个人在oracle路上的成长记录,当中 ...

  2. Android官方SwipeRefreshLayout

    App基本都有下拉刷新的功能,以前基本都使用PullToRefresh或者自己写一个下拉刷新,Google提供了一个官方的下拉刷新控件SwipeRefreshLayout,简单高效,满足一般需求足够了 ...

  3. centos内核基本调优

    一.内核(/etc/sysctl.conf) 1.加大端口号范围net.ipv4.ip_local_port_range = 10240 65000 2.tcp/ip重用及超时限制net.ipv4.t ...

  4. 计算两个有序数组的第K大数(转)

    传统解法,最直观的解法是O(m+n).直接merge两个数组,然后求第K大的数字. 如果想要时间复杂度将为O(log(m+n)).我们可以考虑从K入手.如果我们每次能够删除一个一定在第K个元素之前的元 ...

  5. angularjs与server交互

    真正的应用须要和真实的server进行交互,移动应用和新兴的Chrome桌面应用可能是个例外,可是对于此外的全部应用来说,不管你是想把数据持久化到云端.还是须要与其它用户进行实时交互.都须要让应用与s ...

  6. 【BIEE】02_新建资料库并创建简单分析

    一.新建资料库 1.开始→打开BI管理→点击新建资料库 2.文件→新建资料档案库 下一步 在下面的框中一次填入 连接类型:OCI 10g/11g(直接选择即可) 数据库名称:(DESCRIPTION ...

  7. DOM概念的区分:Attribute和Property, html()及.text(), .val()

    Attribute就是dom节点自带的属性 例如:html中常用的id.class.title.align等: <div id="immooc" title="慕课 ...

  8. H5中滚动卡顿的问题

    加入-webkit-overflow-scrolling: touch;即可

  9. LeetCode226 InvertBinaryTree Java题解

    题目: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 解答: 遍历每个节点  直接交换他们的 ...

  10. Android Studio中查看类的继承关系

    查看类的继承关系的快捷键F4.在Android Studio经常使用快捷键这篇文章中.有写了.今天主要是讲一些关于这个快捷键出来的界面的一些配置.这块功能相对偏冷一些,可能非常多人都会用不到.可是关于 ...