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.setName("xh的");
dept.setAddress("上海");
boolean result = dept.insert();
System.out.println(result);
}
@Test
void testInsertOrUpdate(){
Dept dept = new Dept();
dept.setId(3);
dept.setName("xh的1");
dept.setAddress("上海");
boolean result = dept.insertOrUpdate();
System.out.println(result);
}
@Test
void testUpdate(){
Dept dept = new Dept();
dept.setId(3);
dept.setName("xh的2");
dept.setAddress("上海");
System.out.println(dept.updateById());
}
@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());
}
附:数据库代码
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;
INSERT INTO `dept` VALUES (10, '财务部', '武汉');
INSERT INTO `dept` VALUES (20, '研发部', '武汉');
INSERT INTO `dept` VALUES (30, '销售部', '深圳');
INSERT INTO `dept` VALUES (40, '业务部', '上海');
更多内容欢迎关注公众号:hellotqq。
|