Soalan:
Bagaimana saya boleh menetapkan nilai SQL Parameter predikat "IN" secara dinamik dalam Java semasa menjana JasperReport? Parameter boleh mempunyai berbilang nilai integer yang ditentukan pada masa jalan.
Jawapan:
JasperReports menyediakan pembolehubah khas, $X, untuk mengendalikan senario ini. Dengan menggunakan $X{IN,customer_role,role}, pertanyaan anda akan diterjemahkan kepada:
select * from customer where $X{IN,customer_role,roles}
peranan pelanggan ialah nama lajur dan peranan ialah nama parameter.
Contoh :
Map<String, Object> parameters = new HashMap<>(); parameters.put("roles", Arrays.asList(1, 2, 3)); JasperReport jasperReport = JasperCompileManager.compileReportToFile(templatePath); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
Dengan menetapkan parameter peranan sebagai tatasusunan integer, pertanyaan akan menjana hasil hanya untuk pelanggan yang mempunyai ID peranan dalam senarai itu.
Rujukan:
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Berbilang Nilai Integer Secara Dinamik kepada Klausa 'IN' SQL dalam JasperReports?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!