数据库使用MySQL 5.7.18版本。

装配DataSource的步骤:
1.加入数据库驱动

pom.xml:

 <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.study.springboot</groupId>
<artifactId>spring-boot-jdbc</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging> <name>springboot</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.3.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

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=adminroot

application.properties:

 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=adminroot

以上操作,springboot会自动装配好DataSource和JdbcTemplate,可以直接使用

 package com.study.spring_boot_jdbc.dao;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository; @Repository
public class ProductDao { @Autowired
private JdbcTemplate jdbcTemplate; public void addProduct(String name){
String sql = "insert into product (pname) values ('" + name + "')";
jdbcTemplate.execute(sql);
} }
 @SpringBootApplication public class App {

     public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(App.class,args);
DataSource ds = context.getBean(DataSource.class);
Connection conn = ds.getConnection();
System.out.println(conn.getCatalog());
System.out.println(context.getBean(JdbcTemplate.class));
conn.close();
System.out.println(ds.getClass());
context.close();
} }

如果不想使用Tomcat的DataSource,可以使用两种方式配置需要的数据源,步骤:

1.pom.xml 添加相关依赖

 <dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>

2.

a)spring.datasource.type配置项,可指定具体使用哪种数据源

默认支持Tomcat,Hikari,Dbcp,Dbcp2,Generic(1.5.3.RELEASE)

application.properties:

 spring.datasource.type=com.zaxxer.hikari.HikariDataSource

b)排除Tomcat的数据源

pom.xml:

         <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>

配置自定义DataSource,只需要装配一个DataSource到spring容器中即可

         <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
 @SpringBootConfiguration
public class DBConfiguration {
@Autowired
private Environment env;
@Bean
public DataSource createDataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setUrl(env.getProperty("spring.datasource.url"));
ds.setUsername(env.getProperty("spring.datasource.username"));
ds.setPassword(env.getProperty("spring.datasource.password"));
ds.setDriverClassName(env.getProperty("spring.datasource.driverClassName"));
return ds;
} }

事务:
首先要使用@EnableTransactionManagement启用对事务的支持
然后,在需要使用事务的方法上加上@Transactional
注意,默认只会对运行时异常进行事务回滚,非运行时异常不会回滚事务

APP.class:

 @SpringBootApplication
@EnableTransactionManagement
public class App { public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(App.class,args); context.getBean(ProductDao.class).addProductBatch("TV","MP3","MP4"); System.out.println(ds.getClass());
context.close();
} }
 package com.study.spring_boot_jdbc.dao;

 import java.io.FileNotFoundException;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; @Repository
public class ProductDao { @Autowired
private JdbcTemplate jdbcTemplate; public void addProduct(String name){
String sql = "insert into product (pname) values ('" + name + "')";
jdbcTemplate.execute(sql);
} /**
* rollbackFor 设置对哪些异常进行回滚,默认是运行时异常
* noRollbackFor 设置哪些异常不回滚
* @param names
* @throws Exception
*/
@Transactional(noRollbackFor=NullPointerException.class)
public void addProductBatch(String ... names) throws Exception{
for (String name : names) {
String sql = "insert into product (pname) values ('" + name + "')";
jdbcTemplate.execute(sql);
if ("".equals("")) {
throw new NullPointerException();
}
} } }

注意,在需要使用事务的方法上加上@Transactional!!!

 package com.study.spring_boot_jdbc.dao;

 import java.io.FileNotFoundException;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; @Repository
public class ProductDao { @Autowired
private JdbcTemplate jdbcTemplate; public void addProduct(String name){
String sql = "insert into product (pname) values ('" + name + "')";
jdbcTemplate.execute(sql);
} @Transactional
public void addProductBatch(String ... names) throws Exception{
add(names); } @Transactional
public void add(String ... names) throws Exception{
for (String name : names) {
String sql = "insert into product (pname) values ('" + name + "')";
jdbcTemplate.execute(sql);
if ("".equals("")) {
throw new NullPointerException();
}
}
} }

若addProductBatch方法没有@Transactional,执行addProductBatch,事务不起作用。若是执行add,事务起作用。

SpringBoot学习(3) - jdbc的更多相关文章

  1. springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务

    springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...

  2. Springboot学习07-数据源Druid

    Springboot学习07-数据源Druid 关键字 Druid 前言 学习笔记 正文 1-Druid是什么 Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和SQL解析器 ...

  3. 尚硅谷springboot学习14-自动配置原理

    配置文件能配置哪些属性 配置文件能配置的属性参照 自动配置的原理 1).SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration 2).@Ena ...

  4. SpringBoot学习笔记(7):Druid使用心得

    SpringBoot学习笔记(7):Druid使用心得 快速开始 添加依赖 <dependency> <groupId>com.alibaba</groupId> ...

  5. SpringBoot学习笔记(10):使用MongoDB来访问数据

    SpringBoot学习笔记(10):使用MongoDB来访问数据 快速开始 本指南将引导您完成使用Spring Data MongoDB构建应用程序的过程,该应用程序将数据存储在MongoDB(基于 ...

  6. SpringBoot学习笔记(8):事物处理

    SpringBoot学习笔记(8):事物处理 快速入门 在传统的JDBC事务代码开发过程中,业务代码只有一部分,大部分都是与JDBC有关的功能代码,比如数据库的获取与关闭以及事务的提交与回滚.大量的t ...

  7. springboot 学习笔记(二)

    springboot 学习笔记(二) 快速创建一个springboot工程,并引入所需要的依赖 1.利用Spring initializr 来创建一个springboot项目,登陆http://sta ...

  8. SpringBoot学习笔记:动态数据源切换

    SpringBoot学习笔记:动态数据源切换 数据源 Java的javax.sql.DataSource接口提供了一种处理数据库连接的标准方法.通常,DataSource使用URL和一些凭据来建立数据 ...

  9. SpringBoot学习- 3、整合MyBatis

    SpringBoot学习足迹 1.下载安装一个Mysql数据库及管理工具,同类工具很多,随便找一个都可以,我在windows下做测试项目习惯使用的是haosql 它内部集成了MySql-Front管理 ...

随机推荐

  1. 【python测试开发栈】帮你总结python random模块高频使用方法

    随机数据在平时写python脚本时会经常被用到,比如随机生成0和1来控制逻辑.或者从列表中随机选择一个元素(其实抽奖程序也类似,就是从公司所有人中随机选择中奖用户)等等.这篇文章,就帮大家整理在pyt ...

  2. MyBatis原理-延迟加载,一级缓存,二级缓存设置

    一.延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息. ...

  3. 01_elementUI tree 插件 去图标

    1:elementUI饿了吗前端ui框架,结合vue开发过程中,是不是对tree组件很头疼呢?是不是想自定义图标或者去掉所有图标只留末级checkbox呢? 实现很简单添加几行css代码完美搞定!!! ...

  4. IDEA错误: 找不到或无法加载主类

    错误: 找不到或无法加载主类 idea本身缓存问题 解决:清理缓存重启IDEA file-->invalidate Cache/restart 之后再重新build.

  5. Java操作Jxl实现数据交互。三部曲——《第一篇》

    Java操作Jxl实现.xsl及.xsls两种数据表格进行批量导入数据到SQL server数据库. 本文实现背景Web项目:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js ...

  6. 我是如何做到springboot自动配置原理解析

    一前言 springboot 2.0.0版本分析,整体的自动配置流程如下: 具体配置参考官方文档:springboot-doc 二 @SpringBootApplication 核心注解@Spring ...

  7. MQ队列及常见操作

    一. 创建MQ队列管理器 1.1准备工作 到所安装websphere mq的机子上,进入/opt/mm/bin目录下,查询相关mq的情况,通过命令行./dspmq. 创建mq队列管理器的的时候要用mq ...

  8. aliPayPlus 科普使用

    本文出自APICloud官方论坛, 感谢论坛版主City7的分享. 首先到 https://open.alipay.com/platform/manageHome.htm 申请应用上线 支付宝网关:这 ...

  9. 每天玩转3分钟 MyBatis-Plus - 1. 配置环境

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 ...

  10. transient简介

    当一个对象实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的 ...