大家看看还有什么办法可以再简化一下这个查询! :)//查询的条件有3个:1.开始和结束时间 2.根据(id或名称或创建日期) 3.关键字
public ActionForward toSrchIInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception { IntegralInfoForm itForm = (IntegralInfoForm) form;
HashMap<String, String> parameters = new HashMap<String, String>();
String aBrandId = null;
Set brandId = this.getEnterprise(request).getBrands();
if(brandId!=null && brandId.size()!=0)
{
Tbrandmanage mybrand = (Tbrandmanage)brandId.iterator().next();
aBrandId = mybrand.getVbranid(); //得到企业
}
DateUtil tonow = new DateUtil();
String donow = tonow.dateToStr(new Date()); //得到今天的时间
String dformat = "yyyy-MM-dd";
String startt = itForm.getSrhsrtTim(); //获得开始日期
String endt = itForm.getSrhendTim(); //获得结束日期
String skey = itForm.getSrhkey(); //获得查询条件
String srh = itForm.getSrhname().trim(); //关键字
if(skey.equals("2")){ //查询日期2007-1-1,转2007-01-01
String[] srh1 = srh.split("-");
if(srh1[1].length() == 1){
srh1[1] = "0" + srh1[1];
}
if(srh1[2].length() == 1){
srh1[2] = "0" + srh1[2];
}
srh = srh1[0] + "-" + srh1[1] + "-" + srh1[2];
}
itForm.getConfig().init();
//得到pojo
itForm.getConfig().setToListInfo(Constants.FORWARD_LIST, Tintegralinfos.class);
String queryStr = "";
String strWh = " where " , strand = "and";
//创建时间的各种情况
String querydate=" po.addTime >= to_date( :startt,'"+dformat+"') " +
"and po.addTime <= to_date( :endt,'"+dformat+"') ";//日期总和
//当输入创建时间不全为空时
if(!startt.equals("") || !endt.equals("")){
if("".equals(startt)){
startt=donow;
}
if("".equals(endt)){
endt=donow;
}
}
else{
querydate="";
}
//选择输入条件的情况
String querysrh="";//条件总和
String strId = " po.itId like :srh ";
String strNm = " po.itName like :srh ";
String strAt = " to_char(po.addTime,'"+dformat+"') like :srh ";
//自身的查询条件
String strOd = " po.tbrandManage.vbranid = :vbranid and po.itState not in(1,2) " +
" order by po.addTime desc";
//当查询条件不为空时
if(!"".equals(srh)){
if(skey.equals("0")){
querysrh=strId;
}
else if(skey.equals("1")){
querysrh=strNm;
}
else if(skey.equals("2")){
querysrh=strAt;
}
queryStr+=(strWh+querysrh);
if(!"".equals(querydate)){//当创建时间不全为空时
queryStr+=(strand+querydate+strand+strOd);
parameters.put("startt", startt);
parameters.put("endt", endt);
}
else{
queryStr+=(strand+strOd);
}
parameters.put("srh", "%"+srh+"%");
}
//当为空时
else{
if(!"".equals(querydate)){//当创建时间不全为空时
queryStr+=(strWh+querydate+strand+strOd);
parameters.put("startt", startt);
parameters.put("endt", endt);
}
else{
queryStr+=(strWh+strOd);
}
}
parameters.put("vbranid", aBrandId);
itForm.getConfig().getCondition().setCondition(queryStr);
itForm.getConfig().getCondition().setParameters(parameters);
return pagination(mapping, form, request, response);
}
public ActionForward toSrchIInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception { IntegralInfoForm itForm = (IntegralInfoForm) form;
HashMap<String, String> parameters = new HashMap<String, String>();
String aBrandId = null;
Set brandId = this.getEnterprise(request).getBrands();
if(brandId!=null && brandId.size()!=0)
{
Tbrandmanage mybrand = (Tbrandmanage)brandId.iterator().next();
aBrandId = mybrand.getVbranid(); //得到企业
}
DateUtil tonow = new DateUtil();
String donow = tonow.dateToStr(new Date()); //得到今天的时间
String dformat = "yyyy-MM-dd";
String startt = itForm.getSrhsrtTim(); //获得开始日期
String endt = itForm.getSrhendTim(); //获得结束日期
String skey = itForm.getSrhkey(); //获得查询条件
String srh = itForm.getSrhname().trim(); //关键字
if(skey.equals("2")){ //查询日期2007-1-1,转2007-01-01
String[] srh1 = srh.split("-");
if(srh1[1].length() == 1){
srh1[1] = "0" + srh1[1];
}
if(srh1[2].length() == 1){
srh1[2] = "0" + srh1[2];
}
srh = srh1[0] + "-" + srh1[1] + "-" + srh1[2];
}
itForm.getConfig().init();
//得到pojo
itForm.getConfig().setToListInfo(Constants.FORWARD_LIST, Tintegralinfos.class);
String queryStr = "";
String strWh = " where " , strand = "and";
//创建时间的各种情况
String querydate=" po.addTime >= to_date( :startt,'"+dformat+"') " +
"and po.addTime <= to_date( :endt,'"+dformat+"') ";//日期总和
//当输入创建时间不全为空时
if(!startt.equals("") || !endt.equals("")){
if("".equals(startt)){
startt=donow;
}
if("".equals(endt)){
endt=donow;
}
}
else{
querydate="";
}
//选择输入条件的情况
String querysrh="";//条件总和
String strId = " po.itId like :srh ";
String strNm = " po.itName like :srh ";
String strAt = " to_char(po.addTime,'"+dformat+"') like :srh ";
//自身的查询条件
String strOd = " po.tbrandManage.vbranid = :vbranid and po.itState not in(1,2) " +
" order by po.addTime desc";
//当查询条件不为空时
if(!"".equals(srh)){
if(skey.equals("0")){
querysrh=strId;
}
else if(skey.equals("1")){
querysrh=strNm;
}
else if(skey.equals("2")){
querysrh=strAt;
}
queryStr+=(strWh+querysrh);
if(!"".equals(querydate)){//当创建时间不全为空时
queryStr+=(strand+querydate+strand+strOd);
parameters.put("startt", startt);
parameters.put("endt", endt);
}
else{
queryStr+=(strand+strOd);
}
parameters.put("srh", "%"+srh+"%");
}
//当为空时
else{
if(!"".equals(querydate)){//当创建时间不全为空时
queryStr+=(strWh+querydate+strand+strOd);
parameters.put("startt", startt);
parameters.put("endt", endt);
}
else{
queryStr+=(strWh+strOd);
}
}
parameters.put("vbranid", aBrandId);
itForm.getConfig().getCondition().setCondition(queryStr);
itForm.getConfig().getCondition().setParameters(parameters);
return pagination(mapping, form, request, response);
}
解决方案 »
- 哪位大侠帮忙用socket写个代理程序!
- 急~~~~FOP转PDF中文乱码,提示如下!
- JdbComboBox
- 布局
- javascript 入门级问题:大家一般是用什么工具?
- 一个关于调用方法的问题!!!
- 一个也许很傻的问题,怎么把字节码最后弄成exe文件啊。/
- ★★★HELP! 有关HelloApplet的小问题! ★★★在线等待!!!
- 有沒有能將C/C++源代碼轉換成JAVA源代碼的工具呀?
- 紧急求救:我写了一个Applet,用到了Java Plug-in1.3.1,在IE调用它,但每当移动IE窗口时,却发生如下怪现象..
- Java环境变量问题求助
- 在Lotus中 系统提示 反对使用java.util.Date中的方法
2、queryStr建议转换为StringBuffer(如果是1.5可以用StringBuilder)
3、查询日期2007-1-1,转2007-01-01 这段代码可以考虑用SimpleDateFormat来搞定
最后就是如skey.equals("1")这样的语句改成"1".equals(skey)会好些还有就是将querydate赋值成""不如赋值为null。这样至少效率高些^_^
一点愚见