SpringBoot用JdbcTemplates訪問Mysql實例代碼
本文介紹springboot通過jdbc訪問關(guān)系型MySQL,通過spring的JdbcTemplate去訪問。
準備工作
- jdk 1.8
- maven 3.0
- idea
- mysql
初始化mysql:
-- create table `account` DROP TABLE `account` IF EXISTS CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `money` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; INSERT INTO `account` VALUES ('1', 'aaa', '1000'); INSERT INTO `account` VALUES ('2', 'bbb', '1000'); INSERT INTO `account` VALUES ('3', 'ccc', '1000');
創(chuàng)建工程
引入依賴:
在pom文件引入spring-boot-starter-jdbc的依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
引入mysql連接類和連接池:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency>
開啟web:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
配置相關(guān)文件
在application.properties文件配置mysql的驅(qū)動類,數(shù)據(jù)庫地址,數(shù)據(jù)庫賬號、密碼信息。
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456
通過引入這些依賴和配置一些基本信息,springboot就可以訪問數(shù)據(jù)庫類。
具體編碼
實體類
public class Account { private int id ; private String name ; private double money; ....省略了getter. setter }
dao層
public interface IAccountDAO { int add(Account account); int update(Account account); int delete(int id); Account findAccountById(int id); List<Account> findAccountList(); }
具體的實現(xiàn)類:
package com.forezp.dao.impl; import com.forezp.dao.IAccountDAO; import com.forezp.entity.Account; 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; /** * Created by fangzhipeng on 2017/4/20. */ @Repository public class AccountDaoImpl implements IAccountDAO { @Autowired private JdbcTemplate jdbcTemplate; @Override public int add(Account account) { return jdbcTemplate.update("insert into account(name, money) values(?, ?)", account.getName(),account.getMoney()); } @Override public int update(Account account) { return jdbcTemplate.update("UPDATE account SET NAME=? ,money=? WHERE id=?", account.getName(),account.getMoney(),account.getId()); } @Override public int delete(int id) { return jdbcTemplate.update("DELETE from TABLE account where id=?",id); } @Override public Account findAccountById(int id) { List<Account> list = jdbcTemplate.query("select * from account where id = ?", new Object[]{id}, new BeanPropertyRowMapper(Account.class)); if(list!=null && list.size()>0){ Account account = list.get(0); return account; }else{ return null; } } @Override public List<Account> findAccountList() { List<Account> list = jdbcTemplate.query("select * from account", new Object[]{}, new BeanPropertyRowMapper(Account.class)); if(list!=null && list.size()>0){ return list; }else{ return null; } } }
service層
public interface IAccountService { int add(Account account); int update(Account account); int delete(int id); Account findAccountById(int id); List<Account> findAccountList(); }
具體實現(xiàn)類:
@Service public class AccountService implements IAccountService { @Autowired IAccountDAO accountDAO; @Override public int add(Account account) { return accountDAO.add(account); } @Override public int update(Account account) { return accountDAO.update(account); } @Override public int delete(int id) { return accountDAO.delete(id); } @Override public Account findAccountById(int id) { return accountDAO.findAccountById(id); } @Override public List<Account> findAccountList() { return accountDAO.findAccountList(); } }
構(gòu)建一組restful api來展示
package com.forezp.web; import com.forezp.entity.Account; import com.forezp.service.IAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by fangzhipeng on 2017/4/20. */ @RestController @RequestMapping("/account") public class AccountController { @Autowired IAccountService accountService; @RequestMapping(value = "/list",method = RequestMethod.GET) public List<Account> getAccounts(){ return accountService.findAccountList(); } @RequestMapping(value = "/{id}",method = RequestMethod.GET) public Account getAccountById(@PathVariable("id") int id){ return accountService.findAccountById(id); } @RequestMapping(value = "/{id}",method = RequestMethod.PUT) public String updateAccount(@PathVariable("id")int id , @RequestParam(value = "name",required = true)String name, @RequestParam(value = "money" ,required = true)double money){ Account account=new Account(); account.setMoney(money); account.setName(name); account.setId(id); int t=accountService.update(account); if(t==1){ return account.toString(); }else { return "fail"; } } @RequestMapping(value = "",method = RequestMethod.POST) public String postAccount( @RequestParam(value = "name")String name, @RequestParam(value = "money" )double money){ Account account=new Account(); account.setMoney(money); account.setName(name); int t= accountService.add(account); if(t==1){ return account.toString(); }else { return "fail"; } } }
可以通過postman來測試,具體的我已經(jīng)全部測試通過,沒有任何問題。注意restful構(gòu)建api的風格。
源碼下載:https://github.com/forezp/SpringBootLearning
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java:com.netflix.client.ClientException錯誤解決
本文主要介紹了Java:com.netflix.client.ClientException錯誤解決,主要是指出客戶端?module-sso?試圖通過負載均衡器訪問服務(wù)時,負載均衡器沒有找到可用的服務(wù)器來處理請求,下面就來介紹一下解決方法2024-08-08SpringBoot集成Spring Data JPA及讀寫分離
這篇文章主要介紹了SpringBoot集成Spring Data JPA及讀寫分離的相關(guān)知識,需要的朋友可以參考下2017-04-04SpringBoot 實現(xiàn)定時任務(wù)的方法詳解
這篇文章主要介紹了SpringBoot 實現(xiàn)定時任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08Java游戲服務(wù)器之數(shù)據(jù)庫表存取封裝
這篇文章主要介紹了Java游戲服務(wù)器之數(shù)據(jù)庫表存取封裝的相關(guān)資料,需要的朋友可以參考下2015-11-11springmvc+mybatis 做分頁sql 語句實例代碼
本文通過一段實例代碼給大家介紹了springmvc+mybatis 做分頁sql 語句的方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-07-07詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用
下面小編就為大家?guī)硪黄斦凷ervlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08