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模式
首先:需要让数据库表对应的数据持久层实体类。集成自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代表数据持久层实体类。
BaseMapper<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); }
添加或更新:
@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); }
原文链接:https://www.cnblogs.com/zimug/p/13327061.html