zoukankan      html  css  js  c++  java
  • 03SpringBoot用JdbcTemplates访问Mysql

    03SpringBoot用JdbcTemplates访问Mysql

    1. 初始化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');
    
    
    
    1. 引入依赖
    <!--引入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>
    
    
    1. 在application.properties文件配置mysql的驱动类,数据库地址,数据库账号、密码信息。
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=123456
    
    1. 实体类
    public class Account {
        private int id ;
        private String name ;
        private double money;
    
    ....省略了getter. setter
    
    }
    
    
    1. dao层
    public interface IAccountDAO {
        int add(Account account);
    
        int update(Account account);
    
        int delete(int id);
    
        Account findAccountById(int id);
    
        List<Account> findAccountList();
    }
    
    
    
    1. dao具体的实现类
    @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;
            }
        }
    }
    
    
    1. service层
    public interface IAccountService {
    
    
        int add(Account account);
    
        int update(Account account);
    
        int delete(int id);
    
        Account findAccountById(int id);
    
        List<Account> findAccountList();
    
    }
    
    
    1. service具体实现类
    @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();
        }
    }
    
    
    
    1. 构建一组restful api来展示
    @RestController
    @RequestMapping("/account") // rest规范: /实体
    public class AccountController {
    
        @Autowired
        IAccountService accountService;
    
        @RequestMapping(value = "/list",method = RequestMethod.GET)
        public List<Account> getAccounts(){
            return accountService.findAccountList();
        }
    
        // rest规范,实体名/id
        @RequestMapping(value = "/{id}",method = RequestMethod.GET)
        public  Account getAccountById(@PathVariable("id") int id){
            return accountService.findAccountById(id);
        }
    
        // rest规范使用Put修改
        @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";
            }
        }
    
        // rest规范使用post新增
        @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";
            }
    
        }
    
    }
    
    
    1. 启动项目,通过postman来测试
  • 相关阅读:
    CharSequence的getText()与String的getString()(转)
    android 1.6 launcher研究之自定义ViewGroup (转 2011.06.03(二)——— android 1.6 launcher研究之自定义ViewGroup )
    2.1Android界面View及ViewGroup(转)
    Android笔记:百度地图与高德地图坐标转换问题
    NDK常用命令
    深入Java单例模式(转)
    CentOS 6.2 安装vsftpd 服务器(转)
    centos 安装FTP server详情(转)
    CentOS 6.3下NTP服务安装和配置
    搭建vscode+vue环境
  • 原文地址:https://www.cnblogs.com/wang7/p/10776762.html
Copyright © 2011-2022 走看看