日期:2014-05-19  浏览次数:20630 次

关于jasper+ireport问题
我用ireport做了一个报表文件,里面有一个sql查询语句,但我希望查询条件的数量不是固定的,在程序里输了几个条件,查询语句就是几个条件。怎样传递参数?
目前我知道可以把整个查询语句作为一个参数,但这样要在程序中拼接sql,而且sql中的查询条件不能再用占位符的方式,感觉很不正统,是否有更专业的做法?求指点。。。

------解决方案--------------------
判断条件值是否为空 拼sql呗
------解决方案--------------------
你可以将所有的参数封装成一个Map

将sql写成:

select * from table where 1= 1
至于为什么要1=1 因为你可能一个参数也不传,或者只传一个,解决where在那里append的问题
定义一个List<Object> list = new ArrayList<Objct>();来存放值
然后在拼装SQL的地方,用
if(map.get("name") != null){
sql.append(" and name = ? ")
list.add(map.get("name"));
}

剩下的你应该懂的