mybatis-plus的使用 ------ 进阶

本文主要对mybatis-plus的AR模式、插件、逆向工程、自定义全局操作. 公共字段自动填充等知识点进行讲解。

一. ActiveRecord

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。ActiveRecord 一直广受动态语言( PHP . Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索,仅仅需要让实体类继承 Model 类且实现主键指定方法,即可开启 AR 之旅。接下来看具体代码:

1. entity

@Data
public class User extends Model<User> {
   
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;
    //重写这个方法,return当前类的主键
    @Override
    protected Serializable pkVal() {
   
        return id;
    }
}

注: 实体类继承Model类,重写pkVal方法。

2. mapper

public interface UserDao extends BaseMapper<User> {
   
}

注: 虽然AR模式用不到该接口,但是一定要定义,否则使用AR时会报空指针异常。

3. 使用AR

(1). AR插入操作:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
   "classpathspring/spring-dao.xml"})
public class TestAR {
   
    @Test
    public void testArInsert(){
   
        User user = new User();
        user.setName("林青霞");
        user.setAge(22);
        user.setGender(1);
        boolean result = user.insert();
        System.out.println(result);
    }
}

注: 我们并不需要注入mapper接口,不过正如刚才所说,不使用但还是要定义,否则会报错。AR操作是通过对象本身调用相关方法,比如要insert一个user,那就用这个user调用insert方法即可。返回值为布尔类型,由上图可看到返回了true,是操作成功的。

(2). AR更新操作:

    @Test
    public void testArUpdate(){
   
        User user = new User();
        user.setId(1);
        user.setName("刘亦菲");
        boolean result = user.updateById();
        System.out.println(result);
    }

注: user调用updateById方法,将id为1的用户进行更新。

(3). AR查询操作:

    @Test
    public void testArSelect(){
   
        User user = new User();
        //1. 根据id查询
        //user = user.selectById(1);
        //或者这样用
        //user.setId(1);
        //user = user.selectById();

        //2. 查询所有
        //List<User> users = user.selectAll();

        //3. 根据条件查询
        //List<User> users = user.selectList(new EntityWrapper<User>().like("name","刘"));

        //4. 查询符合条件的总数
        int result = user.selectCount(new EntityWrapper<User>().eq("gender",1));
        System.out.println(result);
    }

注: 上面的代码涉及到了四个不同的查询操作,其实用法与MP的BaseMapper提供的方法的用法差不多,只不过这里是实体对象调用。

(4). AR删除操作:

@Test
public void testArDelete(){
   
    User user = new User();
    //删除数据库中不存在的数据也是返回true
    //1. 根据id删除数据
    //boolean result = user.deleteById(1);
    //或者这样写
    //user.setId(1);
    //boolean result = user.deleteById();

    //2. 根据条件删除
    boolean result = user.delete(new EntityWrapper<User>().like("name","玲"));
    System.out.println(result);
}

注: 这里介绍了两个删除方法,代码中已有注释说明。需要注意的是,删除数据库中不存在的数据,结果也是true。

(5). AR分页操作:

@Test
public void testArPage(){
   
   User user = new User();
   Page<User> page =
           user.selectPage(new Page<>(1,4),
           new EntityWrapper<User>().like("name","刘"));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值