当前,我正在尝试在Spring项目中的存储库中进行JPQL查询,
这是我当前的存储库代码
@Query("select d.denda from DataTransaksi d WHERE d.tanggal= 1170130 AND d.nama = Suratno AND d.masaPajak=2016")
Collection<DataTransaksiModel> findAllDenda();
但是,d.tanggal
,d.nama
和d.masaPajak
将不会始终相同。我想在这里使用方法
if(file.getContentType().equalsIgnoreCase("application/vnd.ms-excel")) {
InputStreamReader input = new InputStreamReader(file.getInputStream());
CSVParser csvParser = CSVFormat.EXCEL.withFirstRecordAsHeader().parse(input);
for (CSVRecord record : csvParser) {
String tanggal = record.get("Tanggal");
String nama = record.get("Nama WP");
String masaPajak = record.get("Masa Pajak");
String denda = record.get("Denda");
String jumlahSetoran = record.get("Jumlah Setoran");
String pokok = record.get("Pokok");
String luasTanah = record.get("L.Tanah");
String luasBangunan = record.get("L. Bangunan");
其中d.tanggal
,d.nama
和d.masaPajak
基于上传的CSV中的tanggal
,nama
和masaPajak
。
是否有办法使d.tanggal
,d.nama
和d.masaPajak
的值动态并遵循我们设置的变量?
仅使用查询占位符
@Query("select d.denda from DataTransaksi d WHERE d.tanggal=:x AND d.nama = :y AND d.masaPajak=:z")
Collection<DataTransaksiModel> findAllDenda(Longx,String y,Long z);
调整x,y,z
类型以适合您的需求。您也可以重命名参数以更具描述性
有两种方法可以执行此操作,
@Query("select d.denda from DataTransaksi d WHERE d.tanggal= ?1 AND d.nama = ?2 AND d.masaPajak=?3")
Collection<DataTransaksiModel> findAllDenda( Long x, String y, Long z); // These should be in exact order.
其他方法是使用命名参数,
@Query("select d.denda from DataTransaksi d WHERE d.tanggal= :x AND d.nama = :y AND d.masaPajak=:z")
Collection<DataTransaksiModel> findAllDenda( @Param("x") Long x, @Param("y") String y, @Param("z") Long z);