zoukankan      html  css  js  c++  java
  • 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> 

    测试类如下
    package com.mp;

    import com.mp.entity.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;

    import java.time.LocalDateTime;

    @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更实用
  • 相关阅读:
    Lining.js
    stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
    任正非:美国通信产业失败,不要归罪于华为的崛起(创业过程:前端替客户考虑,后端及时回款建立信誉)
    草根站长赚不到钱的六大原因(失败的理由却只有一个,那就是你不够努力)
    记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)
    Qt源码分析之QObject
    Mongodb索引用B树,而Mysql用B+树
    开源工作流elsa-core
    ExpressionTree实现JSON解析器
    分析Ajax爬取
  • 原文地址:https://www.cnblogs.com/bosblogs/p/11180930.html
Copyright © 2011-2022 走看看