乐趣区

小书MybatisPlus第5篇Active-Record模式精讲

本文为一个系列中的第五节,前四节拜访如下地址:

  • 小书 MybatisPlus 第 1 篇 - 整合 SpringBoot 疾速开始增删改查
  • 小书 MybatisPlus 第 2 篇 - 条件结构器的利用及总结
  • 小书 MybatisPlus 第 3 篇 - 自定义 SQL
  • 小书 MybatisPlus 第 4 篇 - 表格分页与下拉分页查问

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<User>,并实现序列化接口。

@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 模式就失效了,默认的帮咱们实现了如下的一些数据长久层办法。

二、增删该查的实现

减少:向长久层实体类 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);
}

欢送关注我的博客,外面有很多精品合集

  • 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。

感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。

  • 《手摸手教你学 Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2 一本通》
  • 《实战前后端拆散 RBAC 权限管理系统》
  • 《实战 SpringCloud 微服务从青铜到王者》
  • 《VUE 深入浅出系列》
退出移动版