mybatis-plus

以角色管理模块为例 用MP实现CURD的过程

CREATE TABLE `sys_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色id',
  `role_name` varchar(20) NOT NULL DEFAULT '' COMMENT '角色名称',
  `role_code` varchar(20) DEFAULT NULL COMMENT '角色编码',
  `description` varchar(255) DEFAULT NULL COMMENT '描述',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` tinyint(3) NOT NULL DEFAULT '0' COMMENT '删除标记(0:不可用 1:可用)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='角色';

CRUD

basic

@SpringBootTest

public class TestMpDemo1 {

  // 注入
  @Autowired
  private SysRoleMapper mapper;
  // 查询所有记录 
  @Test
  // must: import org.junit.jupiter.api.Test;
  // 注释直接写在注解后会报错
  public void getAll(){
    List<SysRole>  list = mapper.selectList(null);
    System.out.println(list);
  }

  // 添加操作
  @Test
  public void add(){
    SysRole sysRole = new SysRole();
    sysRole.setRoleName("角色管理员1");
    sysRole.setRoleCode("role1");
    sysRole.setDescription("角色管理员1");

    int  rows = mapper.insert(sysRole);
    System.out.println(rows);
    System.out.println(sysRole.getId());
  }

  // 修改
  @Test
  public void update(){
    // 根据ID查询
    SysRole role = mapper.selectById(10);
    // 设置修改值
    role.setRoleName("cqupt管理员");
    // 调用方法实现最终修改
    int rows = mapper.updateById(role);
    System.out.println(rows);
  }

  // 删除操作(逻辑删除
  @Test
  public void deleteId(){
    int rows = mapper.deleteById(10);
    System.out.println(rows);
  }
  // 批量删除
  @Test
  public void deleteBatchIds(){
    int result = mapper.deleteBatchIds(Arrays.asList(1, 2));
    System.out.println(result);
  }
}

条件查询

diagram-of-mp-conditional-query.png

 @Test
  public void testQuery1(){
    //创建QueryWrapper对象,调用方法封装条件
    QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
    wrapper.eq("role_name","角色管理员");
    //调用mp方法实现查询操作
    List<SysRole> list = mapper.selectList(wrapper);
    System.out.println(list);
  }
  @Test
  public void  testQuery2(){
    //创建QueryWrapper对象,调用方法封装条件
    LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<>();
    wrapper.eqgetRoleName,"角色管理员";
    //调用mp方法实现查询操作
    List<SysRole> list = mapper.selectList(wrapper);
    System.out.println(list);
  }

封装service层

// SysRoleService.java
public interface SysRoleService extends IService<SysRole> {
}

...

//SysRoleServiceImpl.java
@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper,SysRole> implements SysRoleService {
}

...

//TestMpDemo2.java

@SpringBootTest

public class TestMpDemo2 {

  // 注入
  @Autowired
  private SysRoleService service;
  // 查询所有记录 
  @Test
  // must: import org.junit.jupiter.api.Test;
  // 注释直接写在注解后会报错
  public void getAll(){
    List<SysRole>  list = service.list();
    System.out.println(list);
  }
}

自动分页

代码生成

引入依赖

	<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-generator</artifactId>
		<version>3.4.1</version>
	</dependency>

	<dependency>
		<groupId>org.apache.velocity</groupId>
		<artifactId>velocity-engine-core</artifactId>
		<version>2.0</version>
	</dependency>

使用工具类