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;
    }
可不看 可扩展

相关文章: