mybatis-plus提供支持ActiveRecord模式
在Mybatis-Plus中提供了ActiveRecord的模式,支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作,简单来说就是一个实体类继承Model类,并通过注解与数据库的表名进行关联,这样就可以通过实体类直接进行表的简单增删改查操作,这样也确实极大的方便了开发人员。
原理理解:
简单来说Mybatis-plus是基于Mybatis的基础之上进行开发的,其基本操作还是一个Mapper操作中对应一条sql语句,通过参数和返回值来处理sql语句的执行结果。那样我们可以理解Mybatis-Plus的ActiveRecord其实就是Mybatis-Plus给我们提供一些简单的增删改查操作SQl语句的自动生成操作,在Mybatis提供的BaseMapper中默认提供了一些简单增删改查操作,其通过自动生成sql来初始化Mybatis的一些操作,其最终实现和我们直接基于Mybatis开发是一致的。
具体实现:
实体继承Model类,以及加上@EqualsAndHashCode(callSuper = false)注解,不调用父类euqals和hashCode方法;
@Data
@EqualsAndHashCode(callSuper = false)
public class Department extends Model<Department>
CRUD demo案例:
package com.java1234;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.java1234.entity.Department;
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.util.List;
/**
* @author java1234_小锋
* @site www.java1234.com
* @company Java知识分享网
* @create 2020-08-22 17:07
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class ActiveRecordTest {
@Test
public void insert(){
Department department=new Department();
department.setName("xx部门");
department.setRemark("xxx");
boolean insert = department.insert();
System.out.println(insert);
}
@Test
public void updateById(){
Department department=new Department();
department.setId(7);
department.setName("xx部门2");
department.setRemark("xxx2");
boolean b = department.updateById();
System.out.println(b);
}
@Test
public void insertOrUpdate(){
Department department=new Department();
department.setId(8);
department.setName("xx部门2");
department.setRemark("xxx2");
boolean b = department.insertOrUpdate();
System.out.println(b);
}
@Test
public void deleteById(){
Department department=new Department();
department.setId(7);
boolean b = department.deleteById();
System.out.println(b);
}
@Test
public void selectById(){
Department department=new Department();
//Department d = department.selectById(1); // 方式一
department.setId(1); // 方式二
Department d = department.selectById();
System.out.println(d);
}
@Test
public void selectAll(){
Department department=new Department();
List<Department> departmentList = department.selectAll();
System.out.println(departmentList);
}
@Test
public void selectListByQueryMapper(){
QueryWrapper<Department> queryWrapper=new QueryWrapper();
// QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query();
queryWrapper.like("name","测试");
Department department=new Department();
List<Department> departmentList = department.selectList(queryWrapper);
System.out.println(departmentList);
}
}