天天看點

MyBatis Plus Service CRUD接口測試

Service如何內建MP

@Mapper
public interface RoleMapper extends BaseMapper<RoleDO> {
}


public interface RoleService extends IService<RoleDO>{
}


@Service
@RequiredArgsConstructor
public class RoleServiceImpl extends ServiceImpl<RoleMapper, RoleDO> implements RoleService{
}      

插入

        插入一條記錄

boolean save(T entity)      

         批量插入

boolean saveBatch(Collection<T> entityList)      

         批量插入(預設一次插入多少)

boolean saveBatch(Collection<T> entityList, int batchSize);      

更新

        根據ID更新,null值的屬性不參與更新

Employee employee = new Employee();
        employee.setId(7);
        employee.setLastName("a");
        employee.setAge(23);
        employee.setEmail(null);
        employee.setGender(null);

        service.updateById(employee);
 
 UPDATE tb_employee SET last_name='a', age=23
 WHERE id=7;      

         根據條件進行更新,并置空其他屬性(項目庫的我那個頭疼的置空功能就能用這個解決)。

RoleDO roleDO = new RoleDO(roleDto);

        roleService.update(roleDO, new UpdateWrapper<RoleDO>().lambda().
                eq(RoleDO::getId, roleDO.getId())
                //如果要置空其他的屬性
                .set(RoleDO::getUpdateId, null)
                .set(RoleDO::getUpdateTime, null)
        );      

查詢

        根據ID擷取

T getById(Serializable id)      

        擷取一個(如果出現多個,則報錯,傳統的Excepted One , Actual Two 異常)

roleService.getOne(new QueryWrapper<RoleDO>().lambda()
                .eq(RoleDO::getIsManager, role.getIsManager())
);      

        擷取一個(如果出現多個,擷取一個)

roleService.getOne(new QueryWrapper<RoleDO>().lambda()
                .eq(RoleDO::getIsManager, role.getIsManager()), false 
);      

删除

        根據主鍵ID

boolean removeById(Serializable id)      

        根據多個主鍵ID

boolean removeByIds(Collection<? extends Serializable> idList)      

        根據條件進行删除

RoleDO roleDO = new RoleDO(roleDto);
        roleService.remove(new QueryWrapper<RoleDO>().lambda().
                eq(RoleDO::getId, roleDO.getId())
        );      

        通過Map拼接條件删除

Map<String, Object> map = new HashMap<>();
        map.put("id", roleDO.getId());
        map.put("role_name", roleDO.getRoleName());
        roleService.removeByMap(map);

where id = #{id} AND role_name = #{roleName}      

批量查詢

         查詢所有

List<T> list()      

         根據ID批量查詢

List<T> listByIds(Collection<? extends Serializable> idList)      

         根據條件批量查詢

RoleDO roleDO = new RoleDO(dto);
        return roleService.list(new QueryWrapper<RoleDO>().lambda()
                .eq(RoleDO::getIsManager, roleDO.getIsManager())
        );      

分頁查詢

         pageIndex第幾頁,pageSize每頁幾條資料

Page page = new Page(pageIndex,pageSize);
        return roleService.page(page);      

        根據條件分頁查詢

@GetMapping(value = "/pageByWrap")
    @SuppressWarnings(value = "unchecked")
    public Object pageByWrap() {
        return roleService.page(PageContext.getPage(), new QueryWrapper<RoleDO>().lambda()
                .eq(RoleDO::getIsManager, "0")
        );
    }      

查個數數量

int count()      
return roleService.count(new QueryWrapper<RoleDO>().lambda()
                .eq(RoleDO::getIsManager, "0")
        );