SpringBoot非官方教程 笔记《一》

SpringBoot非官方教程原文地址:https://blog.csdn.net/forezp/article/details/70341818

快速搭建springboot-crud项目 使用JdbcTemplates访问Mysql

  • 开发环境
    • jdk 1.8
    • maven 3.0
    • idea
    • mysql
  • 初始化数据库

    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');
    
  • 创建springboot工程

    • Maven依赖如下

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
      
          <!--web依赖 开启web-->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      
          <!--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>
      
          <!--lombok插件库-->
          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <scope>provided</scope>
          </dependency>
      </dependencies>
      
    • application.yml(这里使用yml配置文件)

      http.encoding: #表示用于解码URI的字符编码。
          charset: UTF-8
          enable: true
          force: true
      
      server:
          port: 8801
      
      spring.datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
          username: root
          password: 123456
      
  • 代码实现

    • entity

      @Data //lombok插件
      @ToString
      public class Account {
          private int id;
          private String name;
          private double money;
      }
      
    • dao

      public interface IAccountDAO {
          int add(Account account);
      
          int update(Account account);
      
          int delete(int id);
      
          Account findAccountById(int id);
      
          List<Account> findAccountList();
      }
      
    • daoImpl

      @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) {
                  return list.get(0);
              } else {
                  return null;
              }
          }
      
          @Override
          public List<Account> findAccountList() {
              List<Account> list = jdbcTemplate.query("select * from account", new Object[]{}, new BeanPropertyRowMapper(Account.class));
              if (null != list && 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);
      
          java.util.List<Account> findAccountList();
      }
      
    • serviceImpl

      @Service
      public class AccountServiceImpl 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();
          }
      }
      
    • controller

      @RestController
      @RequestMapping("/account")
      public class AccountController {
          @Autowired
          IAccountService accountService;
      
          @RequestMapping(value = "/list", method = RequestMethod.GET)
          public List<Account> getAccounts() {
              return accountService.findAccountList();
          }
      
          @GetMapping(value = "/{id}")
          public Account getAccountById(@PathVariable("id") int id) {
              return accountService.findAccountById(id);
          }
      
          @PutMapping(value = "/{id}")
          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";
              }
          }
      }
      
    • springbootMain

      @SpringBootApplication
      @Configuration
      @ComponentScan(basePackages = { "com.example.test.*" })//扫描包路径注解(多个包时用,隔开)
      public class ApplicationMain {
      
          public static void main(String[] args) {
              SpringApplication.run(ApplicationMain.class, args);
          }
      
      }
      
  • 遇到的问题

    • 数据库插入中文乱码:

      1. 配置文件中没有使用 url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
      2. 更改数据库配置文件

        mysql安装路劲\MySQL\MySQL Server 5.5 -> my.ini文件
        character-set-server=latin1 -> utf8
        default-character-set=latin1 -> utf8
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值