TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码
搜索到 8 篇与 的结果
2021-12-18

SpringBoot JPA自动设置创建者、最后修改者

SpringBoot JPA自动设置创建者、最后修改者
书接上文,SpringBoot JPA自动设置创建时间、修改时间,审计不可能只包含创建时间、最后修改时间,肯定得有人,也就是必须得有创建者、最后修改者。Spring Data Jpa设置创建者、最后修改者也非常简单。实体修改@Data @Entity @Table(name = "Book") @EntityListeners(AuditingEntityListener.class) public class Book { @Id private long id; private String name; private String author; private BigDecimal price; @CreatedDate private Timestamp createdDate; @CreatedBy private String createBy; @LastModifiedDate private Timestamp lastModifiedDa...
Laughing
2021-12-18

Java

1,415 阅读
0 评论
2021年12月18日
1,415 阅读
0 评论
2021-12-18

SpringBoot JPA自动设置创建时间、修改时间

SpringBoot JPA自动设置创建时间、修改时间
JPA提供了审计功能,用于设置创建者、创建时间、修改者、修改时间等参数。创建时间、修改时间很好理解,就是当前时间,但是创建者、修改者一般都是通过上下文信息获取的,由于我这边是接口里面使用,未使用创建者、修改者,所以先介绍一下创建时间、修改时间的使用。添加依赖那些巴拉巴拉的就不啰嗦。创建实体@Getter @Setter @ToString @Entity @Table(name = "ARAPDiscountRecord") @EntityListeners(AuditingEntityListener.class) public class ARAPDiscountRecordEntity implements Serializable { @CreatedDate @Column(name = "timestamp_createdon") private Timestamp timestampCreatedon; @LastModifiedDate @Column(name = "t...
Laughing
2021-12-18

Java

1,264 阅读
0 评论
2021年12月18日
1,264 阅读
0 评论
2021-07-22

Spring Data Jpa Listener事件的扩展之自定义EntityListener

Spring Data Jpa Listener事件的扩展之自定义EntityListener
随着DDD的设计模式逐渐被大家认可和热捧。JPA通过Listener这种机制可以很好地实现事件分离、状体分离。假如,订单的状态变化可能对我们来说比较重要,我们需要定一个类去监听订单状态变更,通知相应的逻辑代码各自去干各自的活。新增一个UserAuditListener类,在相应的操作上添加Callbacks注解@Slf4j public class UserAuditListener { @PostPersist private void postPersist(SysUser sysUser) { recordLog(sysUser, OperateType.CREATE); } @PostRemove private void postRemove(SysUser sysUser) { recordLog(sysUser, OperateType.REMOVE); } @PostUpdate private void postUpdate(SysUser sysUser) {...
Laughing
2021-07-22

Java

1,058 阅读
0 评论
2021年07月22日
1,058 阅读
0 评论
2021-07-22

Spring Data Jpa扩展之Auditing

Spring Data Jpa扩展之Auditing
Auditing翻译过来是审计和审核。Spring的优秀之处在于帮我们想到了很多我们平时烦琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时间创建的,谁什么时间修改的,并且能让我们方便地记录操作日志。Spring Data JPA为我们提供了审计功能的架构实现,提供了4个注解专门解决这件事:@CreatedBy:创建人。@CreatedDate:创建时间。@LastModifiedBy:最后修改人。@LastModifiedDate:最后修改时间。增加公共虚拟类一般情况下,创建人、创建时间、最后修改人、最后修改时间四个字段都是统一的。所以,我们可以将其提取到公共的类中,然后所有的实体类继承这个虚拟类。@EntityListeners(AuditingEntityListener.class) @MappedSuperclass public abstract class AbstractAuditable { @CreatedBy private String createBy; @CreatedDate @Js...
Laughing
2021-07-22

Java

986 阅读
0 评论
2021年07月22日
986 阅读
0 评论
2021-07-22

Spring Data Jpa QueryByExampleExecutor及JpaSpecificationExecutor的用法

Spring Data Jpa QueryByExampleExecutor及JpaSpecificationExecutor的用法
QueryByExampleExecutor可以通过实体进行简单的查询。比如我们查询用于昵称是超级开头的用户。@RestController @RequestMapping("/user") public class UserController { @Resource private SysUserRepository sysUserRepository; @GetMapping("/findAll") @Transactional public List<SysUser> findAll() { SysUser sysUser = new SysUser(); sysUser.setNickName("超级"); ExampleMatcher exampleMatcher = ExampleMatcher.matching() .withMatcher("nickName&...
Laughing
2021-07-22

Java

965 阅读
0 评论
2021年07月22日
965 阅读
0 评论
2021-07-21

Spring Data Jpa多表关联查询

Spring Data Jpa多表关联查询
在权限表中,我们一般会设计用户表、部门表、角色表,一般情况下,一个用户只能属于一个部门,但是一个用户能拥有多个角色,一个角色也可能对应多个部门。Spring Data Jpa中提供了多个注解,用于处理表之间的关联管理。常见注解@OneToOne@OneToOne代表一对一的关联关系,需要配合@JoinColumn一起使用。注意:可以双向关联,也可以只配置一方,需要视实际需求而定。@OneToOne注释五个属性:targetEntity、cascade、fetch、optional和mappedByfetch属性默认值是FetchType.EAGER。optional = true设置属性可以为null;targetEntity属性:Class类型的属性。定义关系类的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义;cascade属性:CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作,而且这种关系是递归调用的。cascade的值只能从CascadeType.PERSIST(级联新建)、Cas...
Laughing
2021-07-21

Java

1,062 阅读
0 评论
2021年07月21日
1,062 阅读
0 评论
2021-07-21

Spring Data Jpa使用枚举

Spring Data Jpa使用枚举
有时候在数据库设计的时候,我们可能会使用一些固定的值,比如启用、停用,只有这两个值,我们设计数据库可能设计成stop、start。这个时候,我们在Jpa中设计实体时,一般设置成枚举就更合理了。创建枚举public enum Status { stop("停用"), start("启用"); private String value; Status(String value) { this.value = value; } }实体@Entity @Table(name = "sys_user") @Data @Slf4j public class SysUser { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long userId; private Long deptId; private String userName; private...
Laughing
2021-07-21

Java

773 阅读
0 评论
2021年07月21日
773 阅读
0 评论
2021-07-21

Spring Data Jpa流查询

Spring Data Jpa流查询
Spring Data Jpa可以通过使用Java 8 Stream作为返回类型,来逐步处理查询方法的结果,而不是简单的将查询结果包装在Stream数据存储中。接口定义public interface SysUserRepository extends JpaRepository<SysUser, Long> { /** * 根据用户名称查找列表 * * @param userName 用户名称 * @return 列表 */ List<SysUser> findByUserName(String userName); // @Query("select u from SysUser u") Stream<SysUser> readAllBy(); Stream<SysUser> streamAllBy(); }使用@RestController @RequestMapping("/user"...
Laughing
2021-07-21

Java

1,402 阅读
0 评论
2021年07月21日
1,402 阅读
0 评论