前几篇介绍了RESTful API的实现、模板引擎的使用,可是这些内容不足以构建一个动态的WEB应用,做为一个后台服务,还须要各类类型的数据库,来持久化咱们的数据,为调用方提供数据来源,本篇则着重介绍一下如何在Spring Boot使用JDBC操做数据库,后续的篇章会介绍一些ORM框架与Spring Boot整合的案例。html
为了链接数据库,咱们首先须要引入JDBC的起步依赖java
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
数据库的种类比较多,有H二、HSQL、Derby、Mysql、Oracle等等,此处咱们以mysql为例介绍,引入mysql依赖包mysql
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
在src/main/resources/application.yml中添加数据库的相关配置spring
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
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(); }
@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注解直接注入。sql
@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使用,能够参考官方文档。数据库