当前位置: 首页 > news >正文

做网站多少做网站好的框架

做网站多少,做网站好的框架,网站 子域名,湖南郴州建设局网站按照上一篇的内容#xff0c;有一些缺陷的地方。分页对象传什么都可以#xff0c;但是返回的是listHashMapString,Object集合的话#xff0c;分页方法就是无效了。这里把我写的贴一下: Controller: // 带条件分页Integer pageNo null;Integer pageSize …按照上一篇的内容有一些缺陷的地方。分页对象传什么都可以但是返回的是listHashMapString,Object集合的话分页方法就是无效了。这里把我写的贴一下: Controller: // 带条件分页Integer pageNo null;Integer pageSize null;if (request.getParameter(pageNo) ! null) {pageNo Integer.parseInt((String) request.getParameter(pageNo));} else {page.setPageNo(1);pageNo 1;}if (request.getParameter(pageSize) ! null) {pageSize Integer.parseInt((String) request.getParameter(pageSize));} else {pageSize 30;}page.setPageNo(pageNo);page.setPageSize(pageSize);//根据条件查到的集合ListMapString, Object list busMddkApplicationService.findPage(page, params);page.setList(list);model.addAttribute(page, page);获取前台传过来的页码和分页数这样再set到page对象中前台就可以显示正常的分页和页码了。jsp页面 form:form idsearchForm modelAttributebaseBusMddkApplication action${ctx}/contract/busMddkApplication/ methodpost classbreadcrumb form-searchinput idpageNo namepageNo typehidden value${page.pageNo}/input idpageSize namepageSize typehidden value${page.pageSize}/ /form:formjsp页面没改过就用他生成的就可以。再说一下shiro的自定义标签shiro:hasAnyPermissions namecontract:busMddkApplication:edit,contract:busMddkApplication:add/shiro:hasAnyPermissionsshiro:hasAnyPermissions /shiro:hasAnyPermissions这个标签的意思是有任一权限就可以 shiro:hasPermission namecontract:busMddkApplication:editshiro:hasAnyPermissions /shiro:hasAnyPermissions这个标签的意思是有某个权限 Controller: RequiresPermissions(value {contract:busMddkApplication:active,contract:busMddkApplication:edit,contract:busMddkApplication:add,contract:busMddkApplication:info}) RequestMapping(value form)protected String form(HttpServletRequest request, BusMddkApplicationVo busMddkApplicationVo2, Model model,HttpServletResponse response, RedirectAttributes redirectAttributes) { }上面的意思是有任一权限就可以进入这个方法。这是说一下分页的问题,可以用他的page对象会进入pageInterceptor的拦截器。感觉他查询总数的方法有点问题。贴一下原来的和我改动的代码。//得到总记录数common.persistence.interceptor.SQLHelper包下面在PaginationInterceptor里边先调用  page.setCount(SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log));贴一下他原来的getCount()方法。public static int getCount(final String sql, final Connection connection,final MappedStatement mappedStatement, final Object parameterObject,final BoundSql boundSql, Log log) throws SQLException {String dbName Global.getConfig(jdbc.type);final String countSql;if(oracle.equals(dbName)){countSql select count(1) from ( sql ) tmp_count;//需要优化的sql}else{countSql select count(1) from ( removeOrders(sql) ) tmp_count;}Connection conn connection;PreparedStatement ps null;ResultSet rs null;try {if (log.isDebugEnabled()) {log.debug(COUNT SQL: StringUtils.replaceEach(countSql, new String[]{\n,\t}, new String[]{ , }));}if (conn null){conn mappedStatement.getConfiguration().getEnvironment().getDataSource().getConnection();}ps conn.prepareStatement(countSql);BoundSql countBS new BoundSql(mappedStatement.getConfiguration(), countSql,boundSql.getParameterMappings(), parameterObject);//解决MyBatis 分页foreach 参数失效 startif (Reflections.getFieldValue(boundSql, metaParameters) ! null) {MetaObject mo (MetaObject) Reflections.getFieldValue(boundSql, metaParameters);Reflections.setFieldValue(countBS, metaParameters, mo);}//解决MyBatis 分页foreach 参数失效 end SQLHelper.setParameters(ps, mappedStatement, countBS, parameterObject);rs ps.executeQuery();int count 0;if (rs.next()) {count rs.getInt(1);}return count;} finally {if (rs ! null) {rs.close();}if (ps ! null) {ps.close();}if (conn ! null) {conn.close();}}}/** * 去除hql的orderBy子句。 * param hql * return */ SuppressWarnings(unused)private static String removeOrders(String qlString) { Pattern p Pattern.compile(order\\s*by[\\w|\\W|\\s|\\S]*, Pattern.CASE_INSENSITIVE); Matcher m p.matcher(qlString); StringBuffer sb new StringBuffer(); while (m.find()) { m.appendReplacement(sb, ); }m.appendTail(sb);return sb.toString(); }这样生成的sql就是正常的条件查询语句外面包了一层select count(1) from(原sql)。但是在实际使用过程中数据量比较大(百万级别),并且查询条件和参数很多的时候,这样会很慢。不如直接select count(1) from (***) 这样的快。所以改写了他的getCount()方法,在需要优化的sql的where后边加上needOptimization needOptimization。public static int getCount(final String sql, final Connection connection,final MappedStatement mappedStatement, final Object parameterObject,final BoundSql boundSql, Log log) throws SQLException {String dbName Global.getConfig(jdbc.type);final String countSql;if(oracle.equals(dbName)){countSql select count(1) from ( sql ) tmp_count;//需要优化的sql}else if(sql.contains(needOptimization)){countSql select count(1) from removeContent(sql);}else{countSql select count(1) from ( removeOrders(sql) ) tmp_count;}Connection conn connection;PreparedStatement ps null;ResultSet rs null;try {if (log.isDebugEnabled()) {log.debug(COUNT SQL: StringUtils.replaceEach(countSql, new String[]{\n,\t}, new String[]{ , }));}if (conn null){conn mappedStatement.getConfiguration().getEnvironment().getDataSource().getConnection();}ps conn.prepareStatement(countSql);BoundSql countBS new BoundSql(mappedStatement.getConfiguration(), countSql,boundSql.getParameterMappings(), parameterObject);//解决MyBatis 分页foreach 参数失效 startif (Reflections.getFieldValue(boundSql, metaParameters) ! null) {MetaObject mo (MetaObject) Reflections.getFieldValue(boundSql, metaParameters);Reflections.setFieldValue(countBS, metaParameters, mo);}//解决MyBatis 分页foreach 参数失效 end SQLHelper.setParameters(ps, mappedStatement, countBS, parameterObject);rs ps.executeQuery();int count 0;if (rs.next()) {count rs.getInt(1);}return count;} finally {if (rs ! null) {rs.close();}if (ps ! null) {ps.close();}if (conn ! null) {conn.close();}}}/*** 将第一个from前的内容删除* Description:TODO* author:gmwang* time:2017年8月29日 上午10:16:28*/private static String removeContent(String sql) {String sqlAfter StringUtils.substringAfter(sql,FROM);return sqlAfter;}如果原来是select count(1) from (select a.*,b.* from aa a left join bb b on a.id b.id)现在就改成了 select count(1) from aa a left join bb b on a.id b.id原来的sql执行24秒,现在大约是6秒。
http://www.yutouwan.com/news/418929/

相关文章:

  • 网站 流量攻击设计公司网站模板
  • 做网站要钱吗深圳购物网站建设
  • 求推荐好的网站建设平台潜江做网站的
  • 厦门网站建设那家好搜索引擎优化工具深圳
  • html5网站抓取高州女网红遇害案犯罪嫌疑人被抓获
  • 长春网站建设致电吉网传媒优公众号如何推广宣传
  • 自行建造网站做图片能去哪些网站
  • wordpress oday惠州seo博客报价
  • 做毕业证教育网站网站建设公司文案
  • 做网站用到的单词广告策划书前言范文
  • 东阳营销型网站建设品牌鱼爪网商城网站如何建设
  • 商城网站怎么做推广中国互联网站建设中心建站
  • 普宁17网站一起做网店衡水做网站技术
  • 网站初期内容挂机宝做网站可以吗
  • 推广网站优化seo教程上排名做网站要icp备案吗
  • 邯郸做网站找哪家好中国现在哪里建设最多
  • 高端建设网站公司哪家好WordPress会员月卡年卡
  • 河南网站建设平台小网站代码
  • 中国设计网站排行榜前十名优化seo
  • 网站80端口备案网站建设图片代码
  • 公司建网站一般多少钱郑州网站推广外包
  • 找别人做网站交货时应该注意什么类似凡科建站的网站
  • 厦门市海沧区建设局网站工业互联网龙头公司排名
  • 数码电子产品网站名称邯郸网络科技公司电话
  • 网站开发需要考虑哪些方面有哪些网站可以做网站游戏
  • 南阳网站优化排名seo门户网站建设方案
  • 怎样建立商贸网站质感设计网站
  • 苏州学习网站建设网站后台关键词怎么设置
  • 国外最受欢迎的网站xcode 网站开发
  • 南昌网站建设联系方式网站备案要关闭吗