登录  /  注册
博主信息
博文 98
粉丝 1
评论 0
访问量 77897
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
RBAC原则设计Friday权限管理系统(2)
阿杰
原创
258人浏览过

后端技术

一、构建后端SpringBoot项目

1、使用Spring Initializr构建项目

2、创建spring项目时勾选以下依赖

  • Developer Tools: SpringBoot DevTools、Lombok
  • Web: SpringWeb
  • SQL: SpringData JPA、MySQL Driver

二、使用Spring Data JPA构建数据访问层

1、使用ide连接MySQL数据库

2、使用Persistence插件生成实体对象

(1)创建包‘edu.friday.model’,作为实体对象的生成位置
(2)使用Persistence插件生成数据表对应的实体对象(生成持久层)

3、引入Lombok插件简化实体类代码

生成的实体类中有大量的getxxx和setxxx的代码片段,导致实体类比较冗长,可以使用Lombok注解来消除Java类中的大量冗长代码。
1、改写SysUser实体类,再SysUser类上面增加下面三个Lombok注解:

  • @Data:用于给类增加get、set、equals、hashCode和toString方法;
  • @NoArgsConstructor:用于给类增加无参构造器;
  • @AllArgsConstructor:用于给类增加包含所有参数的构造器。
    2、将Entity注解放到字段上面,然后删除掉多余的getXXX、setXXX、equals和hashCode方法,另外不建议使用原始类型,将userId的long原始类型改为Long封装类型,因为Spring Data JPA默认long的值为0,0在业务中是一个有意义的数值,而Long默认值为NULL;

4、编写UserRepository接口操作SysUser实体类

1、在‘edu.friday.repository’包里创建SysUserRepository接口,继承JpaRepository<SysUser,Long>即可实现对SysUser对象的操作

5、配置数据源连接池

1、在pom.xml文件中添加alibaba druid数据连接池的依赖

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>druid-spring-boot-starter</artifactId>
  4. <version>1.1.10</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.commons</groupId>
  8. <artifactId>commons-pool2</artifactId>
  9. </dependency>

2、resources目录下新建yml文件,做基础配置

3、编写测试类

  1. class FridayApplicationTests {
  2. @Autowired
  3. SysUserRepository sysUserRepository;
  4. @Test
  5. void contextLoads() {
  6. }
  7. @Test
  8. void testLog(){
  9. System.out.println(666);
  10. }
  11. /**
  12. * 查找所有用户列表
  13. * */
  14. @Test
  15. void testFindUsers(){
  16. System.out.println(sysUserRepository.findAll());
  17. }
  18. }

4、运行结果,成功获取到数据

6、编写通用BaseModel类

业务系统的大部分表都有create_time、create_by、update_time、update_by这四个公共字段,用来记录数据的创建和更新时间信息等,为了简化代码,编写BaseModel作为Entity基类来管理公共字段。

  1. package edu.friday.common.base;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import jakarta.persistence.Column;
  4. import jakarta.persistence.MappedSuperclass;
  5. import jakarta.persistence.PrePersist;
  6. import jakarta.persistence.PreUpdate;
  7. import lombok.AllArgsConstructor;
  8. import lombok.Data;
  9. import lombok.NoArgsConstructor;
  10. import java.io.Serializable;
  11. import java.util.Date;
  12. /**
  13. * Entity基类
  14. */
  15. @MappedSuperclass
  16. @Data
  17. @NoArgsConstructor
  18. @AllArgsConstructor
  19. public class BaseModel implements Serializable {
  20. private static final long serialVersionUID = 1L;
  21. /**
  22. * 创建者
  23. */
  24. private String createBy;
  25. /**
  26. * 创建时间
  27. */
  28. @Column(updatable = false)
  29. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  30. private Date createTime;
  31. /**
  32. * 更新者
  33. */
  34. private String updateBy;
  35. /**
  36. * 更新时间
  37. */
  38. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  39. private Date updateTime;
  40. @PrePersist
  41. protected void onCreate() {
  42. createTime = new Date();
  43. }
  44. @PreUpdate
  45. protected void onUpdate() {
  46. updateTime = new Date();
  47. }
  48. }

SysUser改写为如下所示

  1. package edu.friday.model;
  2. import edu.friday.common.base.BaseModel;
  3. import jakarta.persistence.*;
  4. import lombok.AllArgsConstructor;
  5. import lombok.Data;
  6. import lombok.NoArgsConstructor;
  7. import java.sql.Timestamp;
  8. import java.util.Objects;
  9. @Entity
  10. @Table(name = "sys_user", schema = "friday", catalog = "")
  11. @Data
  12. @NoArgsConstructor
  13. @AllArgsConstructor
  14. public class SysUser extends BaseModel {
  15. @GeneratedValue(strategy = GenerationType.IDENTITY)
  16. @Id
  17. @Column(name = "user_id")
  18. private Long userId;
  19. @Basic
  20. @Column(name = "user_name")
  21. private String userName;
  22. @Basic
  23. @Column(name = "nick_name")
  24. private String nickName;
  25. @Basic
  26. @Column(name = "user_type")
  27. private String userType;
  28. @Basic
  29. @Column(name = "email")
  30. private String email;
  31. @Basic
  32. @Column(name = "phonenumber")
  33. private String phonenumber;
  34. @Basic
  35. @Column(name = "sex")
  36. private String sex;
  37. @Basic
  38. @Column(name = "avatar")
  39. private String avatar;
  40. @Basic
  41. @Column(name = "password")
  42. private String password;
  43. @Basic
  44. @Column(name = "status")
  45. private String status;
  46. @Basic
  47. @Column(name = "del_flag")
  48. private String delFlag;
  49. @Basic
  50. @Column(name = "login_ip")
  51. private String loginIp;
  52. @Basic
  53. @Column(name = "login_date")
  54. private Timestamp loginDate;
  55. /** @Basic
  56. @Column(name = "create_by")
  57. private String createBy;
  58. @Basic
  59. @Column(name = "create_time")
  60. private Timestamp createTime;
  61. @Basic
  62. @Column(name = "update_by")
  63. private String updateBy;
  64. @Basic
  65. @Column(name = "update_time")
  66. private Timestamp updateTime;*/
  67. @Basic
  68. @Column(name = "remark")
  69. private String remark;
  70. }

7、工具类与封装HTTP结果

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学