前几篇介绍了、,但是这些内容不足以构建一个动态的WEB应用,作为一个后台服务,还需要各种类型的数据库,来持久化我们的数据,为调用方提供数据来源,本篇则着重介绍一下如何在Spring Boot使用JDBC操作数据库,后续的篇章会介绍一些ORM框架与Spring Boot整合的案例。
引入JDBC依赖
为了连接数据库,我们首先需要引入JDBC的起步依赖
org.springframework.boot spring-boot-starter-jdbc
引入相应的数据库依赖
数据库的种类比较多,有H2、HSQL、Derby、Mysql、Oracle等等,此处我们以mysql为例介绍,引入mysql依赖包
mysql mysql-connector-java
配置数据库连接配置
在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对象
@Servicepublic 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)@SpringBootTestpublic 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使用,可以参考。