【问题标题】:Is it possible to create a generic CRUD in spring boot是否可以在 Spring Boot 中创建通用 CRUD
【发布时间】:2019-01-03 06:45:06
【问题描述】:

我有一种情况,我必须为五个以上的实体创建 CRUD。所以,我在想是否可以创建一个通用的 CRUD,这样我就可以使用更少的代码,而不是为每个实体创建单独的 CRUD。 我想创建一个通用的 CRUDUtility,我可以从每个实体控制器方法调用它,并且我想从该实用程序调用通用服务类和通用存储库接口。

这就是我想要的。

我可以从每个实体控制器调用的实用程序:

@Component
public class CRUDUtility<T> {

    @Autowired
    private CRUDService<T> crudService;

}

要从 CRUDUtility 类调用的服务类。

@Service
public class CRUDService<T> {
    @Autowired
    private CRUDRepository<T> crudRepository;

    public T createEntity(T entityTypeParam) {

        return crudRepository.save(entityTypeParam);
    }

}

从 CRUDService 调用的存储库:

@Repository
public interface CRUDRepository<T> extends JpaRepository<T, Number> {


}

谢谢。

【问题讨论】:

  • 考虑使用 JPA,它有你需要的方法,你只需要将你的实体映射到数据库表。
  • 使用 JPARepository 接口代替 CrudRepository
  • 我已经这样做了,但我想要一个用于服务和存储库的通用类
  • 只需创建一个包含该类型的泛型类

标签: java spring spring-boot


【解决方案1】:

是的,你可以创建一个通用的 CRUD

从 Spring 4 开始,您可以通过泛型类型进行自动装配。

public interface CRUDService<T> {
    List<T> listAll();

    T getById(Long id);

    T saveOrUpdate(T domainObject);

    void delete(Long id);
}

@Service
public FirstService implements CRUDService<First>{
.........................
}

@Service
public SecondService implements CRUDService<Second>{
.........................
}

@RestController
public MyController {
    @Autowired
    private CRUDService<First> firstService;

    @Autowired
    private CRUDService<Second> secondService;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多