zoukankan      html  css  js  c++  java
  • 使用spring boot中的JPA操作数据库

    前言

    Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧。

    一、在pom中添加依赖

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

    二、项目配置

    在application.yml中填写数据库及JPA相关配置信息(这样在dev和prod两个环境是可以共用的),示例如下:

    # 多环境配置
    spring:
      profiles:
        active: prod
    
    # 通用数据源配置
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/student_info?serverTimezone=GMT%2B8
        username: root
        password: root
        hikari:
          maximum-pool-size: 20
          minimum-idle: 5
      # JPA相关配置
      jpa:
        hibernate:
          ddl-auto: create
        show-sql: true

    说明:接口调试时,jpa中的ddl-auto:要改为update,否则每次运行都会清空数据哦!

    编写好项目配置后,这里我们可以启动项目,会报错如下:

     这是因为我没创建这个库引起的,那么我们先把这个库创建起来,接着我们重新启动项目就不会报错了,还帮我们显示出了创建sql语句,是不是很赞呢,哈哈

    三、 数据库的操作

    前面的项目基本搭建完成,下面我们通过增删改查的一系列操作,来完成数据库的操作。

    1、创建一个实体

    创建一个名为Student的类,示例如下:

    package com.rongrong.springboot.demo.student;
    
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description:
     * @date 2019/12/30 21:24
     */
    @Entity
    public class Student {
    
        //主键ID
        @Id
        //自增型
        @GeneratedValue
        private Integer id;
        private String name;
        private Integer age;
        private String sex;
        private String email;
    }

    2、数据库操作逻辑编写

     创建一个名为StudentResponstory的接口,继承JPAResponstory,示例如下:

    package com.rongrong.springboot.demo.student;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description:
     * @date 2019/12/30 22:20
     */
    public interface StudentResponstory extends JpaRepository<Student,Integer> {
    }

    创建一个名为StudentController的类,通过增删改查操作,来实现库的操作逻辑,具体示例代码如下:

    package com.rongrong.springboot.demo.student;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description:
     * @date 2019/12/30 20:40
     */
    @RestController
    public class StudentController {
    
        @Autowired
        StudentResponstory studentResponstory;
    
        /**
         * 查询所有学生列表
         *
         * @return
         */
        @GetMapping("/students")
        public List<Student> sudentFindAll() {
            return studentResponstory.findAll();
        }
    
        /**
         * 新增一个学生
         *
         * @param name
         * @param age
         * @param sex
         * @param email
         * @return
         */
        @PostMapping("/studentAdd")
        public Student sudentAdd(@RequestParam("name") String name, @RequestParam("age") Integer age,
                                 @RequestParam("sex") String sex, @RequestParam("email") String email) {
            Student student = new Student();
            student.setName(name);
            student.setAge(age);
            student.setSex(sex);
            student.setEmail(email);
            //保存和更新都用该方法
            return studentResponstory.save(student);
        }
    
        /**
         * 通过iD查找一个学生
         *
         * @param id
         * @return
         */
        @GetMapping("/sudentFindOne/{id}")
        public Student sudentFindOne(@PathVariable("id") Integer id) {
            return studentResponstory.findOne(id);
        }
    
        /**
         * 通过ID更新一个学生信息
         *
         * @param id
         * @param name
         * @param age
         * @param sex
         * @param email
         * @return
         */
        @PutMapping("/sudentUpdate/{id}")
        public Student sudentUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age,
                                    @RequestParam("sex") String sex, @RequestParam("email") String email) {
            Student student = new Student();
            student.setId(id);
            student.setName(name);
            student.setAge(age);
            student.setSex(sex);
            student.setEmail(email);
            //保存和更新都用该方法
            return studentResponstory.save(student);
        }
    
        /**
         * 通过ID删除一个学生
         *
         * @param id
         */
        @DeleteMapping("/sudentDelete/{id}")
        public void sudentDelete(@PathVariable("id") Integer id) {
            studentResponstory.delete(id);
        }
    
        /**
         * 通过年龄查询学生
         *
         * @param age
         * @return
         */
        @GetMapping("/sudentFindByAge/{age}")
        public List<Student> sudentFindByAge(@PathVariable("age") Integer age) {
            return studentResponstory.findByAge(age);
        }
    
    }

    通过年龄查询学生查询时,需要在接口中添加如下方法:

    package com.rongrong.springboot.demo.student;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import java.util.List;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description:
     * @date 2019/12/30 22:20
     */
    public interface StudentResponstory extends JpaRepository<Student,Integer> {
        List<Student> findByAge(Integer age);
    }

    再次启动项目,通过postman进行逐一测试,即可。

    项目启动效果图

    postman效果图

    到此,spring boot中jpa的使用介绍完,有兴趣的同学可以自行尝试。

  • 相关阅读:
    三大主流负载均衡软件对比(LVS+Nginx+HAproxy)
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    centos安装nginx并配置SSL证书
    hadoop创建目录文件失败
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    脚本启动SpringBoot(jar)
    centos做免密登录
    数据库远程连接配置
    Bash 快捷键
    TCP三次握手四次断开
  • 原文地址:https://www.cnblogs.com/longronglang/p/12122220.html
Copyright © 2011-2022 走看看