前幾篇介紹了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使用,能夠參考官方文檔。數據庫