作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服
SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

Custom Tab



准备工作

初始化mysql:

-- create table `account`DROP TABLE `account` IF EXISTSCREATE 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.Driverspring.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.
 */@Repositorypublic 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();

}


具体实现类:

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


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

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

参考资料

relational-data-access

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

SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解


SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA

SpringBoot非官方教程 | 第五篇:springboot整合 beatlsql

SpringBoot非官方教程 | 第六篇:springboot整合mybatis

SpringBoot非官方教程 | 第七篇:springboot开启声明式事务

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

SpringBoot非官方教程 | 第九篇: springboot整合Redis

SpringBoot非官方教程 | 第十篇: 用spring Restdocs创建API文档

SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

SpringBoot非官方教程 | 第十二篇:springboot集成apidoc

SpringBoot非官方教程 | 第十三篇:springboot集成spring cache

SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列

SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ

SpringBoot非官方教程 | 第十六篇:用restTemplate消费服务

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

SpringBoot非官方教程 | 第十八篇: 定时任务(Scheduling Tasks)

SpringBoot非官方教程 | 第十九篇: 验证表单信息

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

SpringBoot非官方教程 | 第二十一篇: springboot集成JMS

SpringBoot非官方教程 | 第二十二篇: 创建含有多module的springboot工程

SpringBoot非官方教程 | 第二十三篇: 异步方法

SpringBoot非官方教程 | 第二十四篇: springboot整合docker

SpringBoot非官方教程 | 第二十五篇:2小时学会springboot

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

优秀文章推荐:




转载自:http://blog.csdn.net/forezp/article/details/70477821

Home