RBAC原则设计Friday权限管理系统(2)

RBAC原则设计Friday权限管理系统(2)

后端技术

一、构建后端SpringBoot项目

1、使用Spring Initializr构建项目

2、创建spring项目时勾选以下依赖 Developer Tools: SpringBoot DevTools、LombokWeb: SpringWebSQL: SpringData JPA、MySQL Driver

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

1、使用ide连接MySQL数据库

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

(1)创建包‘edu.friday.model’,作为实体对象的生成位置

(2)使用Pe优质资源网点我wcqh.cnrsistence插件生成数据表对应的实体对象(生成持久层)

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

生成的实体类中有大量的getxxx和setxxx的代码片段,导致实体类比较冗长,可以使用Lombok注解来消除Java类中的大量冗长代码。

1、改写SysUser实体类,再SysUser类上面增加下面三个Lombok注解: @Data:用于给类增加get、set、equals、hashCode和toString方法;@NoArgsConstructor:用于给类增加无参构造器;@AllArgsConstructor

:用于给类增加包含所有参数的构造器。

2、将Entity注解放到字段上面,然后删除掉多余的优质资源网点我wcqh.cngetXXX、setXXX、equals和hashCode方法,另外不建议使用原始类型,将userId的long原始类型改为Long封装类型,因为Spring Data JPA默认long的值为0,0在业务中是一个有意义的数值,而Long默认值为NULL;

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

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

5、配置数据源连接池

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

<dependency>优质资源网点我wcqh.cn<groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>

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

3、编写测试类

classFridayApplicationTests{@AutowiredSysUserRep优质资源网点我wcqh.cnository sysUserRepository;@Testvoid contextLoads(){}@Testvoid testLog(){System.out.println(666);}/** * 查找所有用户列表 * */@Testvoid testFindUsers(){System.out.println(sysUserRepository.findAll());}}

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

6、编写通用BaseModel类

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

package edu.friday.common.base;import com.fasterxml.jackson.annotation.JsonFormat;import jakarta.persistence.Column;import jakarta.persistence.MappedSuperclass;import jakarta.persistence.PrePersist;import jakarta.persistence.PreUpdate;import lombok.AllArgsConstructor;importl优质资源网点我wcqh.cnombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.Date;/** * Entity基类 */@MappedSuperclass@Data@NoArgsConstructor@AllArgsConstructorpublicclassBaseModelimplementsSerializable{privatestaticfinallong serialVersionUID =1L;/** * 创建者 */privateString createBy;/** * 创建时间 */@Column(优质资源网点我wcqh.cnupdatable =false)@JsonFormat(pattern =“yyyy-MM-dd HH:mm:ss”)privateDate createTime;/** * 更新者 */privateString updateBy;/** * 更新时间 */@JsonFormat(pattern =“yyyy-MM-dd HH:mm:ss”)privateDate updateTime;@PrePersistprotectedvoid onCreate(){ createTime =newDate();}@PreUpdateprotectedvoid onUpdate(){ updateTime =newDate();}优质资源网点我wcqh.cn}

SysUser改写为如下所示

package edu.friday.model;import edu.friday.common.base.BaseModel;import jakarta.persistence.*;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.sql.Timestamp;import java.util.Objects;@Entity@Table(name =“sys_user”, schema =“friday”, catalog =“”)@Data@N优质资源网点我wcqh.cnoArgsConstructor@AllArgsConstructorpublicclassSysUserextendsBaseModel{@GeneratedValue(strategy =GenerationType.IDENTITY)@Id@Column(name =“user_id”)privateLong userId;@Basic@Column(name =“user_name”)privateString userName;@Basic@Column(name =“nick_name”)privateString nickName;@Basic@Column(name =“user_type”)优质资源网点我wcqh.cnprivateString userType;@Basic@Column(name =“email”)privateString email;@Basic@Column(name =“phonenumber”)privateString phonenumber;@Basic@Column(name =“sex”)privateString sex;@Basic@Column(name =“avatar”)privateString avatar;@Basic@Column(name =“password”)privateString password;@Basic@Column(name =“status”)priv优质资源网点我wcqh.cnateString status;@Basic@Column(name =“del_flag”)privateString delFlag;@Basic@Column(name =“login_ip”)privateString loginIp;@Basic@Column(name =“login_date”)privateTimestamp loginDate;/** @Basic @Column(name = “create_by”) private String createBy; @Basic @Column(name = “create_time”)private Timestamp createTime优质资源网点我wcqh.cn; @Basic @Column(name = “update_by”) private String updateBy; @Basic @Column(name = “update_time”) private Timestamp updateTime;*/@Basic@Column(name =“remark”)privateString remark;} 7、工具类与封装HTTP结果

作者最新博文
2020-06-22 12:55:07

© 版权声明
THE END
喜欢就支持一下吧
点赞678 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容