目录

1、创建数据库表

2、引入项目依赖

3、application.yml配置文件

4、创建Article实体类

5、articleDao

6、创建ArticleService

7、创建ArticleServiceImpl

8、ArticleController

9、测试

1、查询一篇文章

2、查询所有文章

3、添加一篇文章

4、修改一篇文章

5、删除一篇文章

​6、事务操作


一、Springboot集成SpringJDBC单数据源

1、创建数据库表

DROP TABLE IF EXISTS `article`;
CREATE TABLE `article`  (`id` int(11) NOT NULL AUTO_INCREMENT,`author` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`title` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`content` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`create_time` datetime(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2、引入项目依赖

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/></parent><groupId>com.lyf</groupId><artifactId>springboot_jdbc</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot_jdbc</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--spring-boot-jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency><!--swagger--><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.5.16</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3、application.yml配置文件

server:port: 8888
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8datasource:url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: '密码'driver-class-name: com.mysql.cj.jdbc.Driver

4、创建Article实体类

package com.lyf.springboot_jdbc.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;/*** 实体类*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Article {private Long id;private String author;private String title;private String content;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createTime;
}

5、articleDao

package com.lyf.springboot_jdbc.dao;
import com.lyf.springboot_jdbc.model.Article;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;/*** @Author 刘耀福* @create 2021/9/6 20:30*/
@Repository
public class ArticleDao {//jdbcTemplate.update适合于insert 、update和delete操作;@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 保存文章* @param article*/public void save(Article article){jdbcTemplate.update("INSERT INTO article(author, title,content,create_time) values(?, ?, ?, ?)",article.getAuthor(),article.getTitle(),article.getContent(),article.getCreateTime());}/*** 删除文章* @param id*/public void deleteById(Long id) {jdbcTemplate.update("DELETE FROM article WHERE id = ?",id);}//更新文章public void updateById(Article article) {jdbcTemplate.update("UPDATE article SET author = ?, title = ? ,content = ?,create_time = ? WHERE id = ?",article.getAuthor(),article.getTitle(),article.getContent(),article.getCreateTime(),article.getId());}//根据id查询一条记录:BeanPropertyRowMapper 将数据库的字段映射为我们对象的字段public Article findById(Long id) {return jdbcTemplate.queryForObject("SELECT * FROM article WHERE id=?",new Object[]{id},new BeanPropertyRowMapper<>(Article.class));}//查询所有public List<Article> findAll(){return jdbcTemplate.query("SELECT * FROM article ",new BeanPropertyRowMapper<>(Article.class));}
}

6、创建ArticleService

package com.lyf.springboot_jdbc.service;
import com.lyf.springboot_jdbc.model.Article;
import java.util.List;/*** @Author 刘耀福* @create 2021/9/6 20:49*/
public interface ArticleService {/*** 保存一篇文章* @param article*/public void saveArticle(Article article);/*** 删除一篇文章* @param id*/void deleteArticle(Long id);/*** 更新一篇文章* @param article*/void updateArticle(Article article);/*** 查询一篇文章* @param id* @return*/Article getArticle(Long id);/*** 查询所有文章* @return*/List<Article> getAll();
}

7、创建ArticleServiceImpl

package com.lyf.springboot_jdbc.service.impl;
import com.lyf.springboot_jdbc.dao.ArticleDao;
import com.lyf.springboot_jdbc.model.Article;
import com.lyf.springboot_jdbc.service.ArticleService;
import com.sun.xml.internal.bind.v2.TODO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;/*** @Author 刘耀福* @create 2021/9/6 20:56*/
@Service
public class ArticleServiceImpl implements ArticleService {@Autowiredprivate ArticleDao articleDao;@Overridepublic void saveArticle(Article article) {articleDao.save(article);}@Overridepublic void deleteArticle(Long id) {articleDao.deleteById(id);}@Overridepublic void updateArticle(Article article) {if(article.getId()==null){//TODO 执行一些操作}articleDao.updateById(article);}@Overridepublic Article getArticle(Long id) {return articleDao.findById(id);}@Overridepublic List<Article> getAll() {return articleDao.findAll();}
}

8、ArticleController

package com.lyf.springboot_jdbc.controller;
import com.lyf.springboot_jdbc.model.Article;
import com.lyf.springboot_jdbc.service.ArticleService;
import com.lyf.springboot_jdbc.utils.AjaxResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;@Slf4j
@Controller
@RequestMapping("/rest")
public class ArticleController {@Resourceprivate ArticleService articleService;/*** 查询所有,使用GET方法* @return*/@GetMapping("/articles")public @ResponseBody AjaxResponse getArticle(){List<Article> articles = articleService.getAll();log.info("articles:" + articles);return AjaxResponse.success(articles);}/*** 获取一篇Article,使用GET方法,根据id查询一篇文章* @param id* @return*/@GetMapping("/articles/{id}")public @ResponseBody AjaxResponse getArticle(@PathVariable("id") Long id){Article article = articleService.getArticle(id);log.info("article:" + article);return AjaxResponse.success(article);}/*** 增加一篇Article ,使用POST方法* @param article* @return*/@PostMapping("/articles")public @ResponseBody AjaxResponse saveArticle(@RequestBody Article article){articleService.saveArticle(article);log.info("saveArticle:" + article);return AjaxResponse.success();}/*** 更新一篇Article,使用PUT方法,以id为主键进行更新* @param article* @return*/@PutMapping("/articles")public @ResponseBody AjaxResponse updateArticle(@RequestBody Article article){articleService.updateArticle(article);log.info("updateArticle:" + article);return AjaxResponse.success();}/*** 删除一篇Article,使用DELETE方法,参数是id* @param id* @return*/@DeleteMapping("/articles/{id}")public @ResponseBody AjaxResponse deleteArticle(@PathVariable("id") Long id){articleService.deleteArticle(id);log.info("deleteArticle:" + id);return AjaxResponse.success();}}

9、测试

1、查询一篇文章

2、查询所有文章

3、添加一篇文章

4、修改一篇文章

5、删除一篇文章

10、事务操作

在修改的方法上添加@Transactional注解,我们在里面制造了异常

/*** @Transactional:事务回滚添加此注解即可解决* @param article*/@Override@Transactionalpublic void updateArticle(Article article) {if(article.getId()==null){//TODO 执行一些操作}int a = 2/0;articleDao.updateById(article);}

postman中请求的数据为:

打开数据库查看,数据库信息回滚了:

springboot集成SpringJDBC单数据源(一)相关推荐

  1. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  2. springboot简易集成mybatisPlus+多数据源

    该项目主要实现mybatisplus.多数据源.lombok.druid的集成 主要参考 https://mp.baomidou.com/guide/quick-start.html 项目地址:htt ...

  3. SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源

    SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源 本文是SpringBoot第27讲,在某些场景下,Springboot需要使用多个数据源,以及某些场景 ...

  4. spring boot 2.1学习笔记【八】SpringBoot 2 集成 mysql多数据源, MySQL多数据源事务

    springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich. 由于是一系列文章,所以后面的文章可能会使用到前面文章的项 ...

  5. springboot 接口404_资深架构带你学习Springboot集成普罗米修斯

    这篇文章主要介绍了springboot集成普罗米修斯(Prometheus)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 ...

  6. SpringBoot集成swagger3(powernode CD2207)(内含教学视频+源代码)

    SpringBoot集成swagger3(powernode CD2207)(内含教学视频+源代码) 教学视频+源代码下载链接地址:https://download.csdn.net/download ...

  7. SpringBoot集成quartz定时调度任务并通过JDBC持久化

    SpringBoot集成quartz定时调度任务并通过JDBC持久化 话不多说上干货 项目pom依赖 配置类 抽象出调度任务实体类 调度执行和调度任务更改工具类 调度配置与执行的代码完毕,下面就是对持 ...

  8. SpringBoot集成Hibernate

    Hibernate是什么? Hibernate与MyBatis都是流行的持久层开发框架,只不过Hibernate是全自动ORM框架,不需要关心sql编写. Hibernate 是一个高性能的对象/关系 ...

  9. springboot集成普罗米修斯

    Prometheus 是一套开源的系统监控报警框架.它由工作在 SoundCloud 的 员工创建,并在 2015 年正式发布的开源项目.2016 年,Prometheus 正式加入 Cloud Na ...

最新文章

  1. mysql命令技巧_Mysql命令行技巧汇总
  2. BCE loss和 CE理解
  3. 2008年清华大学计算机研究生机试真题
  4. string 转化 xml,并找到指定节点及节点值
  5. 操作系统学习笔记-2.1.3进程控制
  6. 标图123123666
  7. Chukwa在百度的应用实践
  8. JVM 图形化监控工具
  9. diskgenius分区linux选哪项,DiskGenius和和傲梅分区助手哪个好 无损C盘扩容选谁
  10. JavaScript 利用Ajax制作一个汇率转换器
  11. mysql按键精灵接口,mysql,按键精灵,读取写入
  12. 微信注册验证成功之后不跳转_微信小号怎么申请(绑定了微信的手机号怎么注册新的微信)...
  13. Fabric系列 - 锚节点
  14. android朋友圈发文字换行,微信朋友圈全文展开 朋友圈文字怎么换行朋友圈发多行文字...
  15. 如何30秒做出精美的Word排版?
  16. 大数据和java的区别
  17. 领导对你说这3句“小话”,表面关心,实则敲打,不改将被弃用
  18. [模块]EC11旋转编码器
  19. 王半仙儿的日记-0009
  20. [Azure]推荐一个好用的Azure存储管理工具——CloudBerry Explorer

热门文章

  1. 基于Yolov5的二维码QR码识别
  2. 免费的计算机编程类中文书籍(超全)
  3. 技术篇:关于EKT的一些设计
  4. [Visual Studio]Code Snippet
  5. linux sbatch 提交作业
  6. 如何dump SKP,SKP抓取
  7. 武汉理工计算机研究生就业去向统计,21考研择校:武汉理工大学就业率和薪酬情况统计!...
  8. c语言程构成,构成C语言程序的基本单位是()
  9. 数学建模——微分方程、差分方程、数理统计
  10. IMX6移植Linux3.0.35内核时需要添加的矩阵按键的平台设备信息