MyBatisPlus-5-ActiveRecord

ActiveRecord(活动记录)

1.1 说明

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。

1.2 使用 AR 模式

让实体类继承 Model 类且实现主键指定方法,即可开启 AR 之旅,例:

public class Employee extends Model<Employee> {
    
    // ...fields

    /**
     * 指定当前实体类的主键属性
     */
    @Override
    protected Serializable pkVal() {
        return id;
    }
}

1.3 基本 CRUD

1.3.1 AR 插入操作

    @Test
    public void testARInsert() {
        Employee employee = new Employee();
        employee.setLastName("宋老师");
        employee.setEmail("sls@163.com");
        employee.setGender(1);
        employee.setAge(35);

        boolean result = employee.insert();
        System.out.println("result:" + result);
    }

1.3.2 AR 修改操作

    @Test
    public void testARUpdate() {
        Employee employee = new Employee();
        employee.setId(7);
        employee.setLastName("宋老湿");
        employee.setEmail("sls@163.com");
        employee.setGender(1);
        employee.setAge(36);

        boolean result = employee.updateById();
        System.out.println("result:" + result);
    }

1.3.3 AR 查询操作

    @Test
    public void testARSelect() {
        Employee employee = new Employee();

        Employee result = employee.selectById(7);
        System.out.println(result);

        employee = new Employee();
        employee.setId(7);
        result = employee.selectById();
        System.out.println(result);

        employee = new Employee();
        List<Employee> emps = employee.selectAll();
        System.out.println(emps);

        emps = employee.selectList(new EntityWrapper<Employee>().like("last_name", "老师"));
        System.out.println(emps);

        int res = employee.selectCount(new EntityWrapper<Employee>().eq("gender", 0));
        System.out.println("result: " + res);
    }

1.3.4 AR 删除操作

    @Test
    public void testARDelete() {
        Employee employee = new Employee();

        boolean result = employee.deleteById(7);
        System.out.println("result:" + result);

        employee = new Employee();
        employee.setId(9);
        result = employee.deleteById();
        System.out.println("result:" + result);

        result = employee.delete(new EntityWrapper<Employee>().like("last_name", "小"));
        System.out.println(result);
    }

注意: 删除不存在的数据 逻辑上也是属于成功的

1.3.5 AR 分页复杂操作

    @Test
    public void testARPage() {
        Employee employee = new Employee();

        Page<Employee> page = employee.selectPage(new Page<>(1, 1),
                new EntityWrapper<Employee>()
                        .like("last_name", "老"));

        List<Employee> emps = page.getRecords();

        System.out.println(emps);
    }

1.4 本质是调用的 Mybatis 对应的方法

Model.class

    ...
    
    public Page<T> selectPage(Page<T> page, Wrapper<T> wrapper) {
        Map<String, Object> map = new HashMap();
        wrapper = SqlHelper.fillWrapper(page, wrapper);
        map.put("ew", wrapper);
        List<T> tl = this.sqlSession().selectList(this.sqlStatement(SqlMethod.SELECT_PAGE), map, page);
        page.setRecords(tl);
        return page;
    }
    
    ...

转载于:https://my.oschina.net/don94/blog/3101971

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值