文档章节

Spring Boot之数据库访问

老虎是个蛋蛋
 老虎是个蛋蛋
发布于 2016/12/24 17:55
字数 583
阅读 599
收藏 6

前几篇介绍了RESTful API的实现模板引擎的使用,但是这些内容不足以构建一个动态的WEB应用,作为一个后台服务,还需要各种类型的数据库,来持久化我们的数据,为调用方提供数据来源,本篇则着重介绍一下如何在Spring Boot使用JDBC操作数据库,后续的篇章会介绍一些ORM框架与Spring Boot整合的案例。

引入JDBC依赖

    为了连接数据库,我们首先需要引入JDBC的起步依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

引入相应的数据库依赖

    数据库的种类比较多,有H2、HSQL、Derby、Mysql、Oracle等等,此处我们以mysql为例介绍,引入mysql依赖包

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

配置数据库连接配置

    在src/main/resources/application.yml中添加数据库的相关配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/restful?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

 使用JDBC操作数据库

  • 创建一个book表,表中有两个字段“name”、“isbn”两个字段。创建一个BookService接口
public interface BookService {
    /**
     * 添加一本书
     * @param name
     * @param isbn
     */
    void addBook(String name, String isbn);

    /**
     * 根据isbn删除
     * @param isbn
     */
    void deleteBook(String isbn);

    /**
     * 获取数据库中书本总数
     * @return
     */
    Integer getBookCount();

    /**
     * 删除所有数据
     */
    void deleteAll();
}
  • 实现接口并注入JdbcTemplate对象
@Service
public class BookServiceImpl implements BookService{
    @Resource
    private JdbcTemplate jdbcTemplate;
    @Override
    public void addBook(String name, String isbn) {
        jdbcTemplate.update("insert into BOOK(NAME, ISBN) values(?, ?)", name, isbn);
    }

    @Override
    public void deleteBook(String isbn) {
        jdbcTemplate.update("delete from BOOK where ISBN = ?", isbn);
    }

    @Override
    public Integer getBookCount() {
        return jdbcTemplate.queryForObject("select count(1) from BOOK", Integer.class);
    }

    @Override
    public void deleteAll() {
        jdbcTemplate.update("delete from BOOK");
    }
}

    由于Spring Boot中JdbcTemplate是自动配置的,你可以直接使用@Autowired或者@Resource注解直接注入。

  • 创建一个针对BookService的测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo4ApplicationTests {

	@Autowired
	private BookService bookService;
	@Before
	public void setUp() {
		// 准备,清空user表
		bookService.deleteAll();
	}
	@Test
	public void contextLoads() {
		// 插入5本书
		bookService.addBook("a", "1");
		bookService.addBook("b", "2");
		bookService.addBook("c", "3");
		bookService.addBook("d", "4");
		bookService.addBook("e", "5");
		// 查数据库,应该有5本书
		Assert.assertEquals(5, bookService.getBookCount().intValue());
		// 删除两本书
		bookService.deleteBook("1");
		bookService.deleteBook("2");
		// 查数据库,应该有3本书
		Assert.assertEquals(3, bookService.getBookCount().intValue());

	}

}

    至此即完成jdbc操作数据库的简单操作,当然这只是几个最基本的操作,如果大家想了解更多的JdbcTemplate使用,可以参考官方文档

 

 

© 著作权归作者所有

老虎是个蛋蛋
粉丝 173
博文 31
码字总数 40085
作品 0
朝阳
高级程序员
私信 提问
Spring Boot实践--项目健康检查与监控

Spring Boot实践--项目健康检查与监控 前言 You build it,You run it, 当我们编写的项目上线后,为了能第一时间知晓该项目是否出现问题,常常对项目进行健康检查及一些指标进行监控。 Spri...

spinachgit
2018/02/11
83
0
第二章——Spring Boot启动器与依赖管理

强烈推荐选择支持依赖管理和可以发布到“Maven中央”仓库的构建系统。推荐使用Maven或Gradle。Spring Boot可以使用其他构建系统(例如,Ant),但支持得并不是很好。 1 依赖管理 Spring Boo...

Leech
2018/02/04
0
0
Spring Boot 整合 MyBatis

最近项目原因可能会继续开始使用MyBatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。 Spring...

中关村的老男孩
06/24
92
0
Spring Boot 和 Grails 的不同点

最近花了些时间了解了一下 Spring Boot 这个新框架。这个框架提供了快速开发基于 Spring Framework 的应用的功能。同样,SpringSource 旗下还有另一个用于 Web 应用快速开发的框架,就是 Gr...

编走编想
2014/05/02
910
0
8.1 Spring Boot集成Groovy混合Java开发

8.1 Spring Boot集成Groovy混合Java开发 本章节我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。 数据库使用mysql,ORM层使用mybatis,模板引擎使用freemarker,构建工具使用G...

程序员诗人
2017/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
32分钟前
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
42分钟前
9
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
52分钟前
6
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
55分钟前
6
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
56分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部