前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于SpringBoot AOP面向切面编程实现Redis分布式锁

基于SpringBoot AOP面向切面编程实现Redis分布式锁

作者头像
字母哥博客
发布2020-09-23 14:45:43
6270
发布2020-09-23 14:45:43
举报

Active Record 适合非常简单的领域需求,尤其在领域模型和数据库模型十分相似的情况下。如果遇到更加复杂的领域模型结构(例如用到继承、策略的领域模型),往往需要使用分离数据源的领域模型,结合 Data Mapper (数据映射器)使用。

具体到使用层面,我们之前章节讲过使用Data Mapper 做数据的持久层操作。

User user = new User();
user.setName("字母哥");
user.setAge(18);

userMapper.insert(user);   //Mybatis Mapper模式

现在我们使用ActiveRecord模式,用法如下,注意二者的区别

User user = new User();
user.setName("zimug");
user.setAge(18);

user.insert();  //ActiveRecord模式

一、使ActiveRecord模式生效

首先:需要让数据库表对应的数据持久层实体类。集成自Model,并实现序列化接口。

@Data   //lombok注解
@EqualsAndHashCode(callSuper = true)
public class User extends Model<User> implements Serializable {
    private static final long serialVersionUID = 6401942840459021558L;
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

其实定义一个Mapper继承自BaseMapper<T>,T代表数据持久层实体类。

public interface UserMapper extends BaseMapper<User> {
}

这样Mybatis Plus的ActiveRecord模式就生效了,默认的帮我们实现了如下的一些数据持久层方法。

Mybatis Plus的ActiveRecord模式方法
Mybatis Plus的ActiveRecord模式方法

二、增删该查的实现

增加:向持久层实体类User对应的数据库表user,插入一条数据。

@Test
public void testInsert() {
  User user = new User();
  user.setName("zimug");
  user.setAge(18);
  user.setEmail("hadoopcn2@163.com");

  boolean success = user.insert();
  System.out.println("是否插入成功:"+success);
}

查询:从数据库表user查询所有数据

@Test
public void testSelect() {
  User user = new User();
  List<User> users = user.selectAll();
  users.forEach(System.out::println);
}

添加或更新:

  • 未设置ID,被视为insert操作,向数据库插入数据
  • 如果设置ID,则先查询是否有此id的记录,如果有此id记录,则视为update,如果没有则视为insert
@Test
public void testUpdate() {
  User user = new User();
  user.setId(1283915378849751041L);
  user.setAge(25);

  boolean success = user.insertOrUpdate();
  System.out.println("是否添加或更新成功(更新):"+success);
}

根据id在数据库表user中删除一条记录

@Test
public void testDelete() {
  User user = new User();
  user.setId(1283915378849751041L);

  boolean success = user.deleteById();
  System.out.println("是否删除成功:"+success);
}

喜欢 (2)or分享 (0)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使ActiveRecord模式生效
  • 二、增删该查的实现
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档