IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MybatisPlus中的AR模式介绍 -> 正文阅读

[大数据]MybatisPlus中的AR模式介绍

1、AR模式介绍

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

? 支持pActiveRecord形式的调用,实体类只需要继承Model类即可进行强大的CRUD操作。

1.1MP的AR模式

1、创建项目继承MP

2、创建数据库实体类,继承Model类

3、实体类中复写pkVal

4、创建Mapper接口并继承BaseMapper接口

5、创建Spring对象,让Spring对象完成对Mapper层的实例化扫描

6、创建实体类对象,直接调用实体类从Model中继承的数据库方法完成数据库操作

1.2 流程比较分析

MP的AR模式其实底层仍然使用mapper层在完成数据库操作。只不过有我们自己调用Mapper对象操作数据库变成了通过实体类对象来调用Mapper完成数据库操作,从代码的物理视图上我们是看不到实体类调用Mapper的过程的。也就是说,本质上是Mapper层在操作数据库。

1.3 代码演示

1.3.1 创建实体类,继承Model 复写pkVal方法

不是特别的明白为何要复写pkVal 方法

@Data
public class Dept extends Model<Dept> implements Serializable {
    private static final long serialVersionUID=1L;
    /**
     * 部门编号
     */
    @TableId(value = "id")
    private Integer id;

    /**
     * 部门名称
     */
    private String name;

    /**
     * 部门所在的位置
     */
    private String address;

}
1.3.2 Mapper接口并继承BaseMapper接口
public interface DeptMapper extends BaseMapper<Dept> {

}
1.3.3 测试
 @Test
    void testInsert(){
        Dept dept = new Dept();
        dept.setId(3); //主键要根据主键的策略和数据库规则来设置
        //在测试时,第一次我用的时dept.setId(3),实体类中主键策略自增长,但是数据库中没有设置,报错
        dept.setName("xh的");
        dept.setAddress("上海");
        boolean result = dept.insert();
        System.out.println(result); //ture

    }
    @Test
    void testInsertOrUpdate(){
        Dept dept = new Dept();
        dept.setId(3); //主键要根据主键的策略和数据库规则来设置
        //在测试时,第一次我用的时dept.setId(3),实体类中主键策略自增长,但是数据库中没有设置,报错
        dept.setName("xh的1");
        dept.setAddress("上海");
        boolean result = dept.insertOrUpdate();
        System.out.println(result); //ture
    }

    @Test
    void testUpdate(){
        Dept dept = new Dept();
        dept.setId(3);
        dept.setName("xh的2");
        dept.setAddress("上海");
        //测试更新
        System.out.println(dept.updateById());//true
    }

    /**
     * 在使用AR模式查询的是时候需要在实体类上使用
     * @TableId(value = "id")来表明主键属性
     */
    @Test
    void testAPSel(){
        Dept dept = new Dept();
        dept.setId(3);
        System.out.println(dept.selectById());
    }
    @Test
    void testSelAll(){
        Dept dept = new Dept();
        List<Dept> depts = dept.selectAll();
        System.out.println(depts);
    }
    @Test
    void testARUpdate(){
        Dept dept = new Dept();
        dept.setId(3);
        System.out.println(dept.deleteById());//true
    }

附:数据库代码

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `id` int(11) NOT NULL COMMENT '部门编号',
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门名称',
  `address` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门所在的位置',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES (10, '财务部', '武汉');
INSERT INTO `dept` VALUES (20, '研发部', '武汉');
INSERT INTO `dept` VALUES (30, '销售部', '深圳');
INSERT INTO `dept` VALUES (40, '业务部', '上海');

更多内容欢迎关注公众号:hellotqq。
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:53:46  更:2021-09-07 10:54:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:35:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码