SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

本文介绍springboot通过jdbc访问关系型mysql,通过spring的JdbcTemplate去访问。

准备工作

初始化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');

创建工程

引入依赖:

在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>

配置相关文件

在application.properties文件配置mysql的驱动类,数据库地址,数据库账号、密码信息。

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就可以访问数据库类。

具体编码

实体类

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();
}

具体的实现类:


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 {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int add(Account account) {return jdbcTemplate.update("insert into account(name, money) values(?, ?)",account.getName(),account.getMoney());}@Overridepublic int update(Account account) {return jdbcTemplate.update("UPDATE  account SET NAME=? ,money=? WHERE id=?",account.getName(),account.getMoney(),account.getId());}@Overridepublic int delete(int id) {return jdbcTemplate.update("DELETE from TABLE account where id=?",id);}@Overridepublic 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;}}@Overridepublic 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();}

具体实现类:

@Service
public class AccountService implements IAccountService {@AutowiredIAccountDAO accountDAO;@Overridepublic int add(Account account) {return accountDAO.add(account);}@Overridepublic int update(Account account) {return accountDAO.update(account);}@Overridepublic int delete(int id) {return accountDAO.delete(id);}@Overridepublic Account findAccountById(int id) {return accountDAO.findAccountById(id);}@Overridepublic List<Account> findAccountList() {return accountDAO.findAccountList();}
}

构建一组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 {@AutowiredIAccountService 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来测试,具体的我已经全部测试通过,没有任何问题。注意restful构建api的风格。

源码下载:https://github.com/forezp/SpringBootLearning

参考资料

relational-data-access

SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql相关推荐

  1. SpringBoot非官方教程 | 第二十篇: 处理表单提交

    转载请标明出处: http://blog.csdn.net/forezp/article/details/71023868 本文出自方志朋的博客 这篇文件主要介绍通过springboot 去创建和提交 ...

  2. SpringBoot非官方教程 | 第十七篇:上传文件

    转载请标明出处:  http://blog.csdn.net/forezp/article/details/71023752  本文出自方志朋的博客 这篇文章主要介绍,如何在springboot工程作 ...

  3. SpringBoot非官方教程 | 第八篇:SpringBoot整合mongodb

    这篇文章主要介绍springboot如何整合mongodb. 准备工作 安装 MongoDB jdk 1.8 maven 3.0 idea 环境依赖 在pom文件引入spring-boot-start ...

  4. SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源

    这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源.同时可实现读写分离. 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建 ...

  5. SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源 1

    这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源.同时可实现读写分离. 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建 ...

  6. SpringCloud核心教程 | 第三篇:服务注册与发现 Eureka篇

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  7. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  8. SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台

    转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/ 本文出自方志朋的博客 这篇文章主要介绍 ...

  9. SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程

    转载请标明出处:  http://blog.csdn.net/forezp/article/details/70341651  本文出自方志朋的博客 简介 spring boot 它的设计目的就是为例 ...

最新文章

  1. 超越 一切还刚刚开始
  2. Eddy的难题_JAVA
  3. java 获取上下文_如何获得spring上下文的方法总结
  4. 【Java文件操作(三)】递归复制文件夹内所有文件
  5. js 绘制泳道图_软件工程师,如何绘制业务架构图 — 4.流程图
  6. 商城系统PageBean分页 Cookie存储浏览记录
  7. 虚拟机中的linux系统联网,虚拟机上Linux系统上网设置
  8. ccf201703-5 引水入城
  9. 九九乘法表居中c语言,excel图文教程:九九乘法表的制作方法,你会哪种?
  10. 交换机怎么用计算机配置文件,如何将交换机配置导入本地计算机做备份
  11. 这是我见过最好的Python教程:十分钟带你认识Python
  12. ElasticSearch.net NEST批量创建修改删除索引完整示例
  13. Android学习-指南针(方向传感器)
  14. EJB是个什么东东?
  15. 零基础深入浅出主成分分析PCA
  16. 【自然语言处理】实验1布置:Word2Vec TransE案例
  17. 计算机网络DCF,基于定长时隙的多跳Ad Hoc计算机网络DCF协议马尔可夫链模型.pdf...
  18. python分割函数_Python应用——自定义函数:分割PDF文件函数
  19. [轉帖]x.509证书在WCF中的应用(Web/IIS篇)
  20. 优品购电商3.0微服务商城项目实战小结

热门文章

  1. 东财计算机应用基础单元作业,东财21春《计算机应用基础》单元作业一 【标准答案】...
  2. 【MATLAB、深度学习】AlexNet及VGG神经网络在MATLAB上的应用
  3. 惠普用的是微软服务器吗,惠普抛弃MediaSmart服务器 微软表示淡定
  4. linux 中级 教程pdf,Linux初中级学习者指导Linux操作系统技术合集.pdf
  5. mysql blob字段存储_使用数据库Blob数据类型进行对象临时存储
  6. 【LeetCode】剑指 Offer 47. 礼物的最大价值
  7. 【高校宿舍管理系统】第八章 学生管理和楼宇管理以及寝室管理
  8. C语言中的运算和运算符
  9. Android嵌入式安卓触摸屏|4418开发板平台
  10. logback 配置详解