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


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

    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模式方法

    二、增删该查的实现

    增加:向持久层实体类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);
    }
    

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

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

    觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

  • 相关阅读:
    即使年龄小,我也是你的领导
    当老外骂你时,你就这样...
    纵横职场宝典
    22岁女老总欲筹办创业联盟
    让你的发言语出惊人
    爱因斯坦难题,98%的人答不出这道题!
    小本创业的11个步骤
    未来十大热门挣钱职业
    常用英语对话
    折腾是检验人才的唯一标准
  • 原文地址:https://www.cnblogs.com/zimug/p/13327061.html
Copyright © 2020-2023  润新知