美文网首页微服务
SpringBoot2.0实战 | 第二章:SpringBoot

SpringBoot2.0实战 | 第二章:SpringBoot

作者: 学好该死的程序 | 来源:发表于2019-12-09 13:19 被阅读0次

    在第一章中,我们使用 SpringBoot 创建了一个最简单的 Web 项目,这一章将在第一章的基础上,实现对数据库的操作。

    本章目标

    整合 SpringBootJPA,实现对 mysql 数据库表的增删查改操作。

    操作步骤

    初始化数据库

    在 mysql 的 test 库中创建表 user,脚本如下,其中主键设置为自动增长。

    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
      `name` VARCHAR(64) NOT NULL COMMENT '名称',
      `sex` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' COMMENT '性别',
      `birthday` DATE NOT NULL DEFAULT '0000-00-00' COMMENT '出生日期',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户';
    

    添加依赖

    引入 Spring Boot Starter 父工程

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>
    

    引入 spring-boot-starter-webspring-boot-starter-data-jpamysql 的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
    

    配置

    SpringBoot 默认使用 application.properties(或者 application.yml)作为项目配置文件,本课程使用 application.yml。

    在 src/main/resources 目录下添加 application.yml 文件。

    配置数据源及 JPA 相关配置

    spring:
      datasource:
        url: jdbc:mysql://192.168.247.130:3306/test
        driver-class-name: com.mysql.jdbc.Driver
        username: app
        password: 123456
    
      jpa:
        database: mysql
        # 显示后台处理的SQL语句
        show-sql: true
        # 自动检查实体和数据库表是否一致,如果不一致则会进行更新数据库表
        hibernate:
          ddl-auto: none
    

    编码

    1. 编写实体类 User
    • 类上添加注解 @Entity
    • 主键添加注解 @Id
    • 主键自增添加注解 @GeneratedValue
    • 日期格式添加注解 @DateTimeFormat(pattern = "yyyy-MM-dd"),用于定义前端入参格式
    @Entity
    public class User {
    
        @Id
        @GeneratedValue(strategy= GenerationType.IDENTITY)
        private Long id;
        private String name;
        private Integer sex;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private LocalDate birthday;
    
        // 省略 get & set 方法
    }
    
    1. 编写 Repository 类

    JPA 提供的 JpaRepository 接口已经实现了对单表的增删查改操作以及一些其它常用的方法。

    创建接口 UserRepository,继承 JpaRepository 接口,内容如下

    public interface UserRepository extends JpaRepository<User, Long> {}
    
    1. 编写 Controller 接口

    创建 controller 类,实现增删查改交换接口

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserRepository userRepository;
    
        @PostMapping("/add")
        public List<User> add(User user) {
            userRepository.save(user);
            return userRepository.findAll();
        }
    
        @PostMapping("/delete")
        public List<User> delete(Long id) {
            userRepository.deleteById(id);
            return userRepository.findAll();
        }
    
        @PostMapping("/list")
        public List<User> list() {
            return userRepository.findAll();
        }
    
        @PostMapping("/update")
        public List<User> update(User user) {
            userRepository.save(user);
            return userRepository.findAll();
        }
    
    }
    

    验证结果

    因为本章内容需要使用 post 提交方式,故不能在地址栏简单地输入地址进行请求,建议使用 postman 进行操作。

    源码地址

    本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git

    总结

    JPA 底层使用的是 Hibernate 框架,已经封装了对单表的各种操作,只需要实现 JpaRepository 接口即可以获得对当前表的各种操作方法,这使得使用 JPA 进行数据库的 CURD 操作变得非常简单。

    相关文章

      网友评论

        本文标题:SpringBoot2.0实战 | 第二章:SpringBoot

        本文链接:https://www.haomeiwen.com/subject/lmubgctx.html