Spring boot 入门三:SpringBoot用JdbcTemplates访问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>
数据库配置
继上一节新建了一个开发环境的配置文件 application-dev.properties 所以在这个配置文件中做配置mysql的驱动类,数据库地址,数据库账号、密码信息,然后将application.yml 的生效配置文件改成dev
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=123456
通过引入这些依赖和配置一些基本信息,springboot就可以访问数据库类
具体编码
实体类
public class Account {
    private int id ;
    private String name ;
    private double money;
public int getId() {
        return id;
    }
public void setId(int id) {
        this.id = id;
    }
public String getName() {
        return name;
    }
public void setName(String name) {
        this.name = name;
    }
public double getMoney() {
        return money;
    }
public void setMoney(double money) {
        this.money = money;
    }
}
dao层
public interface  IAccountDAO {
    int add(Account account);
int update(Account account);
int delete(int id);
Account findAccountById(int id);
List<Account> findAccountList();
}
实现类
@Repository
public class AccountDAOImpl implements IAccountDAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public int add(Account account) {
        int id =jdbcTemplate.update("INSERT  INTO  account(name,money) VALUES (?,?)",account.getName(),account.getMoney());
        return id;
    }
@Override
    public int update(Account account) {
        int id =jdbcTemplate.update("UPDATE  account set name=? ,money=? where id=?",account.getName(),account.getMoney(),account.getId());
        return id;
    }
@Override
    public int delete(int id) {
        return jdbcTemplate.update("DELETE FROM 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();
}
实现类
@Service
public class AccountServiceImpl implements IAccountService {
    @Autowired
    private 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();
    }
}
构建一组restful api来展示
@RestController
@RequestMapping("/account")
public class AccountController {
    @Autowired
    private IAccountService accountService;
@RequestMapping(value = "/getAccounts",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进行测试,读者自行测试,这里就不贴图啦。
Spring boot 入门三:SpringBoot用JdbcTemplates访问Mysql 实现增删改查的更多相关文章
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
		本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ... 
- Spring Boot入门(五):使用JDBC访问MySql数据库
		本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序开发的过程中,操作数据库是必不可少的部分,前面几篇博客中,也一直未涉及到数据库的操作,本篇博客 就 ... 
- Spring Boot(二):Spring-Data-JPA操作数据库( Hibernate)增删改查
		一.Maven使用3.3.9版本或以上,选择Binary 版本 二.添加spring-data-jpa和数据库依赖,以oracle为例 三.添加连接数据库配置 四.新建model自动生成数据库表(不用 ... 
- NX二次开发-NX访问MySQL数据库(增删改查)
		版本:NX11+VS2013+MySQL5.6(x64)+SQLyog 1.新建一个NX项目(多字节) 2.设置VC++目录(调用MySQL的头文件,dll和lib库文件) 3.设置番茄助手 然后重启 ... 
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
		版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ... 
- Spring Boot2 系列教程 (六) | 使用 JdbcTemplates 访问 Mysql
		前言 如题,今天介绍 springboot 通过jdbc访问关系型mysql,通过 spring 的 JdbcTemplate 去访问. 准备工作 SpringBoot 2.x jdk 1.8 mav ... 
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
		salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ... 
- node.js入门学习(四)--Demo图书的增删改查
		需求:图书的增删改查,图书数据保存在data.json文件中. 1.Demo结构: 2.首先下载安装node.js,配置环境变量:参考博客 3.项目初始化 1)创建项目根目录node-hello,进入 ... 
- SSM框架入门——整合SSM并实现对数据的增删改查功能(Eclipse平台)
		一.搭建框架环境 整个项目结构如下: 搭建SSM步骤如下: (1)准备好三大框架的jar包,如图所示 (2)在Eclipse中创建一个web project ,并把这些jar包粘贴到lib文件夹中. ... 
随机推荐
- “全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子
			难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ... 
- 六,apache修改默认根文件路径
			1,安装完apache后,项目默认根路径是E:\Program Files\AppServ\www. 默认根路径在httpd.conf中默认配置过了,我们可以通过修改配置文件改变项目默认根路径. Do ... 
- apache测试网页执行效率
			apache软件下有一个测试网页访问速度的工具ab.exe,位于apache的bin目录下,windows下使用命令行进入bin目录,执行ab.exe -n 10000 -c 10 http://12 ... 
- margin 和 padding
			一图胜千言!!  参考 CSS padding margin border属性详解 
- 抓取出现时间3s后消失的元素
			背景:日常自动化脚本编写中,可能需要定位,获取元素的位置,通常会遇到一种元素,只出现几秒,几秒后慢慢消失的,这个时候,如果要抓取这个提示,如果和它比手速,当你手速比较快,可以箭头抓取到,但当这个元素的 ... 
- Android Kotlin开发之使用Butterknife注意要点
			使用kotlin-kapt插件 依赖由java的annotationProcessor改为kapt 在使用控件绑定使用时,网上搜使用方法,不知道被哪个家伙带坑里了. //错误用法 @BindView( ... 
- 【转】Spark源码分析之-deploy模块
			原文地址:http://jerryshao.me/architecture/2013/04/30/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B- ... 
- __name__ == "__main__"的作用是什么?
			问题: __name__ == "__main__" 的作用是什么? # Threading example import time, thread def myfunction( ... 
- Jenkins 学习笔记(一)
			Jenkins 要学习Jenkins首先要了解一个概念---持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次 ... 
- C语言中判断字符串str1是否以str2开始或结束
			#include <stdlib.h> #include <string.h> #include <stdio.h> /**判断str1是否以str2开头 * 如果 ... 
