zoukankan      html  css  js  c++  java
  • SpringBoot+SpringDataJpa快速上手(基本CRUD)

    以及表结构和数据

    依赖

    <!--        如果有SpringBoot启动器,就不加-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
        </parent>
    
        <dependencies>
    <!--        Springweb启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    <!--        SpringData-jpa启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    <!--        mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.45</version>
            </dependency>
    <!--        lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    实体类

    • 实体类和表的映射关系
      @Entity 表示实体类
      @Table 表示和表的关系
    • 类中属性和表中字段的映射关系
      @Id 指明主键
      @GeneratedValue 主键的生成策略
      @Column 属性和字段对应关系,一般是字段名和属性名相差比较大使用
    package com.lianxi.jpa.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import javax.persistence.*;
    import java.util.Date;
    
    /**
     * 实体类和表的映射关系
          @Entity   表示实体类
          @Table    表示和表的关系
     *类中属性和表中字段的映射关系
            @Id     指明主键
        @GeneratedValue     主键的生成策略
        @Column     属性和字段对应关系,一般是字段名和属性名相差比较大使用
     */
    
    @Entity
    @Table(name ="lx_user")
    @Data
    @NoArgsConstructor
    public class User{
        // id
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        // 用户名
        @Column(name ="user_name")
        private String userName;
        // 密码
        private String password;
        // 姓名
        private String name;
        // 年龄
        private Integer age;
        // 性别,1男性,2女性
        private Integer sex;
        // 出生日期
        private Date birthday;
        // 创建时间
        private Date created;
        // 更新时间
        private Date updated;
        // 备注
        private String note;
    	
    	//用来测试保存
        public User(String userName, String password, String name, Integer age, Integer sex, String note) {
            this.userName = userName;
            this.password = password;
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.note = note;
        }
    	//用来测试更新
        public User(Long id,String userName, String password, String name, Integer age, Integer sex, String note) {
            this.id=id;
            this.userName = userName;
            this.password = password;
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.note = note;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    数据库以及表

    /*
    SQLyog Ultimate v12.08 (64 bit)
    MySQL - 5.7.32 : Database - springdata_jpa
    *********************************************************************
    */
    /*!40101 SET NAMES utf8 */;
    
    /*!40101 SET SQL_MODE=''*/;
    
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    CREATE DATABASE /*!32312 IF NOT EXISTS*/`springdata_jpa` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    
    USE `springdata_jpa`;
    
    /*Table structure for table `lx_user` */
    
    DROP TABLE IF EXISTS `lx_user`;
    
    CREATE TABLE `lx_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
      `password` varchar(100) DEFAULT NULL COMMENT '密码',
      `name` varchar(100) DEFAULT NULL COMMENT '姓名',
      `age` int(10) DEFAULT NULL COMMENT '年龄',
      `sex` tinyint(1) DEFAULT NULL COMMENT '性别,1男性,2女性',
      `birthday` date DEFAULT NULL COMMENT '出生日期',
      `note` varchar(255) DEFAULT NULL COMMENT '备注',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`user_name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
    
    /*Data for the table `lx_user` */
    
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (1,'zhangsan1','1234567','张三',25,1,'1964-08-08','张三同学在学Java','2014-09-19 16:56:04','2014-09-21 11:24:59');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (2,'lisi11','123456777','李四',21,1,'1995-01-01','李四同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (3,'wangwu','123456','王五',22,1,'1994-01-01','王五同学在学php','2014-09-19 16:56:04','2014-09-19 16:56:04');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (4,'zhangwei','123456','张伟',20,1,'1996-09-01','张伟同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (5,'lina','123456','李娜',28,0,'1988-01-01','李娜同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (6,'lilei','123456','李磊',23,1,'1993-08-08','李磊同学在学Java','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (7,'yangmi','123456','杨幂',24,0,'1992-08-08','杨幂同学在学php','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (8,'liuyan','123456','柳岩',21,0,'1995-08-08','柳岩同学在学java','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (9,'liuyifei','123456','刘亦菲',18,0,'1998-08-08','刘亦菲同学在学唱歌','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (10,'fanbingbing','123456','范冰冰',25,0,'1991-08-08','范冰冰同学在学java','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (11,'zhengshuang','123456','郑爽',23,0,'1993-08-08','郑爽同学在学习java','2014-09-20 11:41:15','2014-09-20 11:41:15');
    insert  into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (12,'tangyan','123456','唐嫣',26,0,'1990-08-08','唐嫣同学在学习java','2014-09-20 11:41:15','2014-09-20 11:41:15');
    
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    启动类

    package com.lianxi;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class UserSpringDataJpaApplication {
        public static void main(String[] args) {
            SpringApplication.run(UserSpringDataJpaApplication.class,args);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    application.yml

    server:
      port: 7184
    spring:
      application:
        name: springData-Jpa
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/springdata_jpa?characterEncoding=UTF-8
        username: root
        password: root
      jpa:
        database: mysql # 指定数据库
        show-sql: true  # 设置显示SQL
        generate-ddl: true  # 设置Generate Ddl
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    controller

    package com.lianxi.jpa.controller;
    
    import com.lianxi.jpa.pojo.User;
    import com.lianxi.jpa.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.List;
    
    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        /**
         * 查询全部
         * @return
         */
        @GetMapping("/findAll")
        public List<User> getUserFindAll(){
    
            List<User> userList = userService.userFindAll();
            //返回结果
            return userList;
        }
        /**
         * 根据id查询
         */
        @GetMapping("/{id}")
        public User getUserById(@PathVariable("id") Long id){
    
            User user = userService.findById(id);
            //返回结果
            return user;
        }
    
        /**
         * 添加一条数据
         * 为了测试方便,就用GET请求了
         */
        @GetMapping("/add/add")
        public String userAdd(){
            //构建添加数据
            User user = new User("ceshi","123456","测试1",18,1,"用来测试");
            //添加
            String userAdd = userService.userAdd(user);
    
            return userAdd;
        }
    
        /**
         * 删除一条数据
         * 为了测试方便,就用GET请求了
         */
        @GetMapping("/deleteById/{id}")
        public String deleteById(@PathVariable("id") Long id){
    
            String deleteById = userService.deleteById(id);
            //返回结果
            return deleteById;
        }
    
        /**
         * 根据id更新一条数据
         * 为了测试方便,就用GET请求了
         * @param id
         * @return
         */
        @GetMapping("/updata/{id}")
        public String updataById(@PathVariable("id") Long id){
            //构建数据
            User user = new User(id,"ceshi","12345666","测试1",18,1,"用来测试更新方法!!");
            //调用更新方法
            String updataById = userService.updataById(user);
            //返回结果
            return updataById;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    dao

    继承 JpaRepository接口提供了基本的增删改查
    继承JpaSpecificationExecutor接口用于做复杂的条件查询

    package com.lianxi.jpa.dao;
    
    import com.lianxi.jpa.pojo.User;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
    
    /**
     * JpaRepository提供了基本的增删改查
     * JpaSpecificationExecutor用于做复杂的条件查询
     */
    public interface UserDao extends JpaRepository<User,Long>, JpaSpecificationExecutor<User> {
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    service

    package com.lianxi.jpa.service;
    
    import com.lianxi.jpa.dao.UserDao;
    import com.lianxi.jpa.pojo.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import java.util.List;
    import java.util.Optional;
    
    @Service
    public class UserService {
    
        @Autowired
        private UserDao userDao;
    
        /**
         * 查询全部
         * @return
         */
        public List<User> userFindAll() {
            List<User> userDaoAll = userDao.findAll();
            return userDaoAll;
        }
    
        /**
         * 根据id查询
         */
        public User findById(Long id) {
            User user = userDao.findById(id).get();
            return user;
        }
    
        /**
         * 添加一条数据
         */
        public String userAdd(User user) {
    
            try {
                //保存
                userDao.save(user);
    
                return "保存成功";
            } catch (Exception e) {
                e.printStackTrace();
                return "保存失败";
            }
    
        }
    
        /**
         * 根据id删除
         * @param id
         * @return
         */
        public String deleteById(Long id) {
            try {
                //保存
                userDao.deleteById(id);
    
                return "删除成功";
            } catch (Exception e) {
                e.printStackTrace();
                return "删除失败";
            }
        }
    
        /**
         * 根据id更新一条数据
         * @param user
         * @return
         */
        public String updataById(User user) {
            try {
                //更新
                userDao.save(user);
    
                return "更新成功";
            } catch (Exception e) {
                e.printStackTrace();
    
                return "更新失败";
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    这篇文章是基本的CRUD,用来快速上手使用,没有分页查询和多条件查询,其它的之后的文章里会有

    原文章:https://blog.csdn.net/weixin_44257023/article/details/112064298

  • 相关阅读:
    蓝桥杯历届试题 打印十字图 文字图形
    Cuckoo Hashing
    2006 飞行员配对(二分图最大匹配)
    Bad Hair Day(求数组中元素和它后面离它最近元素之间的元素个数)
    2019CCPC江西省赛
    字典树系统学习
    ac自动机学习
    项目管理(把与某点相邻边分为两类 是复杂度降为(n^(3/2))
    Ultra-QuickSort(离散化)
    Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
  • 原文地址:https://www.cnblogs.com/tfil/p/14228266.html
Copyright © 2011-2022 走看看