我在Spring Boot工作。现在我正在为CRUD操作创建API。另外,我需要编写一个代码,用于使用字段名称搜索数据库记录。在这里,我正在使用“产品”表。该表包含“itemCode”,“hsCode”,“itemCategoryId”,“productDescription”,“brand”,“countryOfOrigin”,“uom”,“retailSellingPrice”,“exciseTaxPercentage”,“assignedTo”,“assignedBy”等字段。 ..等
So, if the user gives the input as the brand, uom, retailSellingPrice. i should use a Query like "SELECT * FROM PRODUCTS WHERE brand=:brand, uom =:uom,retailSellingPrice=:retailSellingPrice ".
我编写了一个自定义JPA方法,如findByuomContainingOrRetailSellingPriceContainingOrBrandContaining(parameter1,parameter2,parameter3);
但是有没有其他方法可以使用字段搜索产品,这样如果有10个搜索字段,那么我的自定义方法只会很小。
请给我一些建议
答案 0 :(得分:0)
您可以创建自己的自定义存储库,并根据需要提供方法名称(一个小的)。
您可以创建如下所示的自定义存储库:
假设您有ProductRepository implements CrudRepository<Product,Long>
#Your_repository_name{custom}
( ProductRepositoryCustom )的界面,并根据需要为所需参数提供方法名称。ProductRepositoryCustom
(ProductRepository
)ProductRepository implements CrudRepository<Product,Long>,ProductRepositoryCustom
醇>
现在,您可以从调用ProductRepositoryImpl
方法的同一对象中调用ProductRepository
的方法。
@Autowired
private ProductRepository productRepository;
使用productRepository
调用Impl clas的方法。
答案 1 :(得分:0)
查看JPA的按示例查询。 QueryByExampleExecutor
接口由JpaRepository
扩展。它有一些通过示例搜索的方法。这是一个简单的例子,
假设Product
是表示Products
表的实体,那么你可以这样做,
Product product = new Product();
product.setItemCode(...);
product.setHsCode(...);
...
Example<Product> example = Example.of(product);
Iterable<Product> = repository.findAll(example);
您可以找到具体示例here。