1.页面入口的过滤字段定义:
<input name="filter_name_like" type="text" style="margin-left: 0px;width:100px;" class="box_ipt " value="$!filter_name_like"/>
1)字段定义:统一用filter_开头,这样后面可以自动解析成需要过滤的字段,之后是filed名称,可以匹配到数据库里的字段,多单词的定义比如 userName 数据库里是user_name,这里可以直接写userName,后面会自动解析
2)筛选条件:相等(eq),大于(gt),小于(lt),大于等于(ge),小于等于(le),模糊匹配(like),默认为相等 ,例如 filter_name
3)value定义为name相同的名字,后续可以直接映射过来,方便查询和分页操作之后的回带
4)分页部分的隐藏域中同样需要定义,方便分页的操作时可以把查询条件带上
<input type="hidden" name="filter_name_like" value="$!filter_name_like"/>
2. 调度层Action
1)实现modelDriven,方便后续增删改查的时候,相关value到bean的自动映射
public class AlarmCodeAction extends BaseAction implements ModelDriven<AlarmCode> {
2)在action的实现类里需要定义过滤的字段,以及SearchRet等常用的类型,get set方法
/******************************** 页面映射信息 start***********************/ public String filter_keyWord_like; public String filter_pageType_eq; public String filter_pageValue_like; public String filter_activeTime_ge; public String filter_endTime_le; public String filter_platform_eq; public String orderField="active_time"; //排序字段 public String orderBy="desc"; //asc or desc public String sendMsg=""; public SearchRet sr; /********************************* 页面映射信息 end ************************/
注:orderField和orderBy两个filed可以实现table中单击任意thead,实现按照该字段升序,降序的切换,后面会说到
3)过滤方法:
public String list(){ try{ sr = service.list(request, AlarmCode.class, orderField, orderBy, curpage, pagesize, getLink()); }catch(Throwable t){ log.error("AlarmCodeAction|list|error:",t); } return "success"; }
service会根据之前定义的filter开头的字段,自动解析request,省去了自己组装参数的事情,service是根据泛型自动解析的bean,也省去了service的开发,同时,新增修改删除也有泛型的实现方式,后面是代码
3.服务层
public class AlarmCodeService extends BaseService<AlarmCode>{
自己相关业务的service实现baseService之后,增删改查的持久层操作自己就不用写了,BaseService代码片段如下
public class BaseService<T> { public SearchRet list(HttpServletRequest request,Class<T> clazz,String orderName,String orderBy,int curpage,int pagesize,String link){ Pair<ArrayList<T>,Integer> pair = ConsoleDBUtil.queryPageList(clazz , true, DaoUtil.getConsoleUtf8(),PropertyFilterUtil.clazzNameToDBName(clazz.getSimpleName()) , null, PropertyFilterUtil.getParams(request), PropertyFilterUtil.getOrdersMap(orderName, orderBy), curpage, pagesize); SearchUtil su = new SearchUtil(pair.first,new ConvertService(),new Paging(pair.second, curpage, pagesize, link)); SearchRet sr = su.searchNoPage(); return sr; } public int insert(DBClientWrapper db,T o){ int ret = ConsoleDBUtil.insert(db, o,null); return ret; } public int insert(T o){ return insert(DaoUtil.getConsoleDB(),o); } public int update(DBClientWrapper db,T o,String [] updateFields,String [] whereFields){ int ret = ConsoleDBUtil.update(db, o,updateFields , whereFields); return ret; } public int update(T o,String [] updateFields,String [] whereFields){ int ret = ConsoleDBUtil.update(DaoUtil.getConsoleDB(), o,updateFields , whereFields); return ret; } //根据属性删除 public int delete(DBClientWrapper db,T o,String [] whereFields){ int ret = ConsoleDBUtil.delete(db, o, whereFields); return ret; }