Mybatis-Plus ActiveRecord模式

ActiveRecord 模式

简称AR模式 ,它是活动记录,是一种领域模型模式。特点:一个模型类对应关系型数据库中的一个表, 一个实例对应数据库中的一行记录,属于动态模型,简单讲就是直接用实体类对数据库进行Crud 操作,而Java是准静态语言不能支持AR 形式 MP作者对此进行探索才有现在的功能java 也能实现的AR模式。下面直接上代码

@Data
@TableName("user")
@EqualsAndHashCode(callSuper = false)
public class User  extends Model<User> {
private static final Long SeriaVersionUID=1L;
}

首先实体类继承Model抽象类 继承后可能会有警告(我这里没有)警告是lombok自动生成的equals和hashcode没有调用父类 在类上添加 该注解@EqualsAndHashCode(callSuper = false) false 表示不调用 ,还有需要添加
private static final Long SERIALVERSIONUID=1L;(也可能不用加)
接口 继承BaseMapper

public interface UserMapper extends BaseMapper<User> 

测试类如下

@RunWith(SpringRunner.class)
@SpringBootTest
public class ARTest {
    /**
     * AR新增 用实体类对象调用inser()
     * 生成的sql: INSERT INTO user ( id, name, age, email, manager_id, create_time ) VALUES ( ?, ?, ?, ?, ?, ? )
     */
    @Test
    public void test() {
        User user = new User();
        user.setAge(18);
        user.setName("哈哈");
        user.setEmail("hh@baomidou.com");
        user.setManagerId(1088248166370832385L);
        user.setCreateTime(LocalDateTime.now());
        boolean b = user.insert();
        System.out.println(b);
    }

    /**
     * AR查询根据id用实体类对象调用selectById()
     * 查询结果是一个新对象 并不会封装到原有对象里
     * 生成的sql:SELECT id,name,age,email,manager_id,create_time FROM user WHERE id=?
     */
    @Test
    public void testSelectId() {
        User user = new User();
        user.setId(1088248166370832385L);
        User user1 = user.selectById();
        System.out.println(user1);
    }

    /**
     * AR 更新
     * 生成的sql:UPDATE user SET name=? WHERE id=?
     */
    @Test
    public void testUpdate() {
        User user = new User();
        user.setId(1088248166370832385L);
        user.setName("王天凤");
        boolean user1 = user.updateById();
        System.out.println(user1);
    }
    /**
     * AR 删除
     * 生成的sql:DELETE FROM user WHERE id=?
     * 
     * 结果返回boolean 这里要注意的 MP在在处理返回值是 大于等于0 都会返回true
     */
    @Test
    public void testDelete() {
        User user = new User();
        user.setId(1149946502220713986L);

        boolean user1 = user.deleteById();
        System.out.println(user1);
    }
}

还有很多方法这里只是列举了基本的 ,目前感觉MP就是把mybatis 所欠缺的那部分功能不上了让mybatis更实用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: 关于mybatis-plus的简介以及基本使用,我在《mybatis-plus的使用 ------ 入门》...
    贪挽懒月阅读 162,191评论 58 178
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,130评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,796评论 1 32
  • 一、MybatisPlus简介 1.1.简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工...
    Waldeinsamkeit4阅读 18,347评论 3 76
  • 今天期中考试,坐在我旁边的正好是我的学生。她已经做了大半,我就顺便拿起她的试卷看了看。妈呀!这题目出的,有的做过,...
    痴行人阅读 1,163评论 2 1