以下是一个简单的基于Spring Boot的示例代码:
RoleCla类:
```java
public class RoleCla {
private Long id;
private String name;
private String description;
private Date createTime;
private Date updateTime;
// 省略getter和setter方法
}
```
RoleClaController类:
```java
@RestController
@RequestMapping("/roles")
public class RoleClaController {
@Autowired
private RoleClaService roleClaService;
@PostMapping("/")
public RoleCla createRole(@RequestBody RoleCla roleCla) {
return roleClaService.createRole(roleCla);
}
@GetMapping("/{id}")
public RoleCla getRoleById(@PathVariable("id") Long id) {
return roleClaService.getRoleById(id);
}
@GetMapping("/")
public List<RoleCla> getAllRoles() {
return roleClaService.getAllRoles();
}
@GetMapping("/search")
public List<RoleCla> searchRoles(
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "description", required = false) String description,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "sort", defaultValue = "id,asc") String[] sort) {
return roleClaService.searchRoles(name, description, page, size, sort);
}
}
```
RoleClaService类:
```java
@Service
public class RoleClaService {
@Autowired
private RoleClaRepository roleClaRepository;
public RoleCla createRole(RoleCla roleCla) {
// 检查角色分类名称是否重复等逻辑校验
// ...
return roleClaRepository.save(roleCla);
}
public RoleCla getRoleById(Long id) {
return roleClaRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("RoleCla", "id", id));
}
public List<RoleCla> getAllRoles() {
return roleClaRepository.findAll();
}
public List<RoleCla> searchRoles(String name, String description, int page, int size, String[] sort) {
Pageable pageable = PageRequest.of(page, size, Sort.by(sort));
Specification<RoleCla> spec = Specification.where(null);
if (name != null) {
spec = spec.and(RoleClaSpecification.nameLike(name));
}
if (description != null) {
spec = spec.and(RoleClaSpecification.descriptionLike(description));
}
Page<RoleCla> pageResult = roleClaRepository.findAll(spec, pageable);
return pageResult.getContent();
}
}
```
RoleClaRepository接口:
```java
public interface RoleClaRepository extends JpaRepository<RoleCla, Long>, JpaSpecificationExecutor<RoleCla> {
}
```
RoleClaSpecification类:
```java
public class RoleClaSpecification {
public static Specification<RoleCla> nameLike(String name) {
return (root, query, cb) -> cb.like(root.get("name"), "%" + name + "%");
}
public static Specification<RoleCla> descriptionLike(String description) {
return (root, query, cb) -> cb.like(root.get("description"), "%" + description + "%");
}
}
```
以上代码实现了对角色分类的增删改查以及查询功能,其中查询支持按名称和描述进行模糊查询,并支持排序和分页。需要在配置文件中配置数据库连接等信息,并根据具体需求进行修改。