前面介紹了使用Collection of JavaBeans方式創建報表,其實我們還可以通過自定義實現JRDataSource接口的方式,為了方便此處直接繼承JRBeanCollectionDataSource,同樣的此處也需要增加一個靜態工廠方法
package org.example.datasource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import org.example.entity.User; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class CustomerBeanCollectionDataSource extends JRBeanCollectionDataSource { public CustomerBeanCollectionDataSource(Collection<?> beanCollection) { super(beanCollection); } public CustomerBeanCollectionDataSource(Collection<?> beanCollection, boolean isUseFieldDescription) { super(beanCollection, isUseFieldDescription); } public static CustomerBeanCollectionDataSource getInstance(){ List<User> list = new ArrayList<>(); for(int i=0;i<10;i++){ User user = new User(); user.setName("AA"+i); user.setAge(20+i); user.setSex("男"); user.setAddress("address"+i); list.add(user); } return new CustomerBeanCollectionDataSource(list); } }
此處用到了前面定義的User,其他步驟和上面類似,就不過多講述了,具體參見 https://www.cnblogs.com/xiupan/p/13334986.html