- 浏览: 235303 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
netwelfare:
文章的格式有点乱啊,看起来很费事啊。推荐看这个系列的json教 ...
java 操作JSON -
yangqingandjay:
ijoi刚好一个月[color=orange][align=c ...
spring 定时器配置 -
Jxdwuao:
不错, 很好用
spring 定时器配置 -
1870702720:
3楼说的可以,之前我一直以为想配置在一个定时器中,可是实现不了 ...
spring 定时器配置 -
taiwei.peng:
你可以配置两个定时器,这是我个人的想法,仅供参考。
spring 定时器配置
@Repository
public class BulkCargoDao extends BaseEntityDao<BulkCargo> implements IBulkCargoDao {
@Resource
private IZoneCodeInfoBiz zoneCodeInfoBiz;
public void setZoneCodeInfoBiz(IZoneCodeInfoBiz zoneCodeInfoBiz) {
this.zoneCodeInfoBiz = zoneCodeInfoBiz;
}
/**
* 查询监控信息
* @param queryParam
* @return
* @throws DaoException
*/
@Override
@SuppressWarnings("unchecked")
public List<BulkCargo> findBulkCargoByParam(final QueryParam queryParam)
throws Exception {
final List<Object> paramList=new ArrayList<Object>();
final String sqlString = generateSQL(queryParam,paramList);
return (List<BulkCargo>) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createSQLQuery(sqlString);
query.setFirstResult(queryParam.getPageSize()*(queryParam.getPageIndex()));
query.setMaxResults(queryParam.getPageSize());
if (paramList != null && paramList.size() > 0) {
Object[] values = paramList.toArray();
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return findBulkCargoResult(query.list(),queryParam);
}
});
}
/**
* 拼装Sql
* @param queryParam
* @param paramList
* @return
*/
private String generateSQL(QueryParam queryParam,List<Object> paramList)throws Exception{
StringBuffer sb = new StringBuffer();
String sql="";
sql = SQLProvider.getSQL("query_bulkCargo").trim();
sb.append(sql);
return this.setCommonQueryCondition(queryParam, paramList, sb);
}
/**
* 设置共有的查询条件
* @param queryParam
* @param paramList
* @param sb
* @return
* @throws Exception
*/
private String setCommonQueryCondition(QueryParam queryParam,List<Object> paramList,StringBuffer sb)throws Exception{
String queryValue="";
String commonSql="";
//开始日期
queryValue= queryParam.getQueryValue("query_startDate");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.REPORT_DT>=to_date(?,'yyyy-MM-dd')");
paramList.add(queryValue);
}
//结束日期
queryValue=queryParam.getQueryValue("query_endDate");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.REPORT_DT<=to_date(?,'yyyy-MM-dd')");
paramList.add(queryValue);
}
//线路编码
queryValue=queryParam.getQueryValue("query_lineCode");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.LINE_CODE= ? ");
paramList.add(queryValue);
}
//运力名称
queryValue=queryParam.getQueryValue("query_conveyanceName");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.CONVEYANCE_NAME LIKE ? ");
paramList.add("%"+queryValue+"%");
}
//始发网点
queryValue=queryParam.getQueryValue("query_srcZoneCode");
if(!BlankUtil.isBlank(queryValue)){
commonSql=" AND EXISTS (SELECT 1 FROM TM_DEPARTMENT B WHERE T.SRC_ZONE=B.DEPT_CODE ";
this.convertSrcZoneCode(queryValue,sb, paramList,commonSql);
}
//到达网点
queryValue=queryParam.getQueryValue("query_destZoneCode");
if(!BlankUtil.isBlank(queryValue)){
commonSql=" AND EXISTS (SELECT 1 FROM TM_DEPARTMENT B WHERE T.DEST_ZONE=B.DEPT_CODE ";
this.convertSrcZoneCode(queryValue,sb, paramList,commonSql);
}
return sb.toString();
}
/**
* 输入查询条件为始发网点和到达网点的逻辑
* @param queryValue
* @param sb
* @param paramList
* @param commonSql
* @throws Exception
*/
private void convertSrcZoneCode(String queryValue,StringBuffer sb,List<Object> paramList,String commonSql)throws Exception{
String [] deptValue=null;
String res="";
int typeLevel=0;
if (!BlankUtil.isBlank(queryValue)){
String zoneCode=queryValue.toUpperCase().replace(",", ",");
deptValue=zoneCode.split(",");
res = zoneCodeInfoBiz.checkZoneCodesIsEffective(deptValue);
if(res.equals(OmpmgmtConstants.SUCCESS)){
typeLevel=zoneCodeInfoBiz.getZoneCodeLevel(deptValue[0]);
sb.append(commonSql);
switch(typeLevel){
case 1:sb.append(" AND B.HQ_CODE IN ");break;
case 2:sb.append(" AND B.AREA_CODE IN ");break;
case 3:sb.append(" AND B.DEPT_CODE IN ");break;
case 4:sb.append(" AND B.DIST_CODE IN ");break;
}
sb.append("(");
for(String deptCode:deptValue){
sb.append("?,");
paramList.add(deptCode);
}
sb.replace(sb.toString().length()-1, sb.toString().length(),"");
sb.append("))");
}
}
}
/**
* 封装返回结果集
* @param transferValue
* @param queryParam
* @return
*/
private List<BulkCargo> findBulkCargoResult(List<Object[]> transferValue,QueryParam queryParam){
List<BulkCargo> bulkCargoList=new ArrayList<BulkCargo>();
BulkCargo bulkCargo=null;
for(int i=0;i<transferValue.size();i++){
int number=0;
bulkCargo=new BulkCargo();
Object [] transferObj=transferValue.get(i);
//日期
bulkCargo.setQueryDate((Date)transferObj[number++]);
//始发网点
bulkCargo.setSrcZoneCode(transferObj[number++].toString());
//始发班次
bulkCargo.setSrcBatchCode(transferObj[number++].toString());
//线路编码
bulkCargo.setLineCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力名称
bulkCargo.setConveyanceName(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力类型
bulkCargo.setConveyanceType(ConveynceTypeEnum.getName(TypeUtil.intPrimValue(transferObj[number++])));
//线路等级
bulkCargo.setLineLevel(LineLevelEnum.getDesc(transferObj[number++]==null?"":transferObj[number-1].toString()));
//计划起飞,发车时间
bulkCargo.setPlanDepartTime((Date)transferObj[number++]);
//实际起飞,发车时间
bulkCargo.setActualDepartTime((Date)transferObj[number++]);
//计划落地,到达时间
bulkCargo.setPlanArriveTime((Date)transferObj[number++]);
//实际落地,到达时间
bulkCargo.setActualArriveTime((Date)transferObj[number++]);
//到达网点
bulkCargo.setDestZoneCode(transferObj[number++].toString());
//实际散货班次
bulkCargo.setActualBatchCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力实到票数
bulkCargo.setActualLoadCnt(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发班次编码
bulkCargo.setActualDepartBatchCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发票数
bulkCargo.setActualDepartCnt(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发占比
bulkCargo.setActualDepartRatio(transferObj[number++]==null?"":transferObj[number-1].toString());
bulkCargoList.add(bulkCargo);
}
return bulkCargoList;
}
/**
* 查询数量
* @param queryParam
* @return
* @throws DaoException
*/
@Override
@SuppressWarnings("unchecked")
public int findBulkCargoSize(QueryParam queryParam) throws Exception {
final List<Object> paramList=new ArrayList<Object>();
final String sqlString = generateCountSQL(queryParam,paramList);
return ((Number) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createSQLQuery(sqlString);
if (paramList != null && paramList.size() > 0) {
Object[] values = paramList.toArray();
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return query.uniqueResult();
}
})).intValue();
}
/**
* 拼装汇总Sql
* @param queryParam
* @param paramList
* @return
*/
private String generateCountSQL(QueryParam queryParam,List<Object> paramList)throws Exception{
StringBuffer sb = new StringBuffer();
String sql="";
sql = SQLProvider.getSQL("cont_bulkCargo").trim();
sb.append(sql);
return this.setCommonQueryCondition(queryParam, paramList, sb);
}
public class BulkCargoDao extends BaseEntityDao<BulkCargo> implements IBulkCargoDao {
@Resource
private IZoneCodeInfoBiz zoneCodeInfoBiz;
public void setZoneCodeInfoBiz(IZoneCodeInfoBiz zoneCodeInfoBiz) {
this.zoneCodeInfoBiz = zoneCodeInfoBiz;
}
/**
* 查询监控信息
* @param queryParam
* @return
* @throws DaoException
*/
@Override
@SuppressWarnings("unchecked")
public List<BulkCargo> findBulkCargoByParam(final QueryParam queryParam)
throws Exception {
final List<Object> paramList=new ArrayList<Object>();
final String sqlString = generateSQL(queryParam,paramList);
return (List<BulkCargo>) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createSQLQuery(sqlString);
query.setFirstResult(queryParam.getPageSize()*(queryParam.getPageIndex()));
query.setMaxResults(queryParam.getPageSize());
if (paramList != null && paramList.size() > 0) {
Object[] values = paramList.toArray();
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return findBulkCargoResult(query.list(),queryParam);
}
});
}
/**
* 拼装Sql
* @param queryParam
* @param paramList
* @return
*/
private String generateSQL(QueryParam queryParam,List<Object> paramList)throws Exception{
StringBuffer sb = new StringBuffer();
String sql="";
sql = SQLProvider.getSQL("query_bulkCargo").trim();
sb.append(sql);
return this.setCommonQueryCondition(queryParam, paramList, sb);
}
/**
* 设置共有的查询条件
* @param queryParam
* @param paramList
* @param sb
* @return
* @throws Exception
*/
private String setCommonQueryCondition(QueryParam queryParam,List<Object> paramList,StringBuffer sb)throws Exception{
String queryValue="";
String commonSql="";
//开始日期
queryValue= queryParam.getQueryValue("query_startDate");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.REPORT_DT>=to_date(?,'yyyy-MM-dd')");
paramList.add(queryValue);
}
//结束日期
queryValue=queryParam.getQueryValue("query_endDate");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.REPORT_DT<=to_date(?,'yyyy-MM-dd')");
paramList.add(queryValue);
}
//线路编码
queryValue=queryParam.getQueryValue("query_lineCode");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.LINE_CODE= ? ");
paramList.add(queryValue);
}
//运力名称
queryValue=queryParam.getQueryValue("query_conveyanceName");
if(!BlankUtil.isBlank(queryValue)){
sb.append(" AND T.CONVEYANCE_NAME LIKE ? ");
paramList.add("%"+queryValue+"%");
}
//始发网点
queryValue=queryParam.getQueryValue("query_srcZoneCode");
if(!BlankUtil.isBlank(queryValue)){
commonSql=" AND EXISTS (SELECT 1 FROM TM_DEPARTMENT B WHERE T.SRC_ZONE=B.DEPT_CODE ";
this.convertSrcZoneCode(queryValue,sb, paramList,commonSql);
}
//到达网点
queryValue=queryParam.getQueryValue("query_destZoneCode");
if(!BlankUtil.isBlank(queryValue)){
commonSql=" AND EXISTS (SELECT 1 FROM TM_DEPARTMENT B WHERE T.DEST_ZONE=B.DEPT_CODE ";
this.convertSrcZoneCode(queryValue,sb, paramList,commonSql);
}
return sb.toString();
}
/**
* 输入查询条件为始发网点和到达网点的逻辑
* @param queryValue
* @param sb
* @param paramList
* @param commonSql
* @throws Exception
*/
private void convertSrcZoneCode(String queryValue,StringBuffer sb,List<Object> paramList,String commonSql)throws Exception{
String [] deptValue=null;
String res="";
int typeLevel=0;
if (!BlankUtil.isBlank(queryValue)){
String zoneCode=queryValue.toUpperCase().replace(",", ",");
deptValue=zoneCode.split(",");
res = zoneCodeInfoBiz.checkZoneCodesIsEffective(deptValue);
if(res.equals(OmpmgmtConstants.SUCCESS)){
typeLevel=zoneCodeInfoBiz.getZoneCodeLevel(deptValue[0]);
sb.append(commonSql);
switch(typeLevel){
case 1:sb.append(" AND B.HQ_CODE IN ");break;
case 2:sb.append(" AND B.AREA_CODE IN ");break;
case 3:sb.append(" AND B.DEPT_CODE IN ");break;
case 4:sb.append(" AND B.DIST_CODE IN ");break;
}
sb.append("(");
for(String deptCode:deptValue){
sb.append("?,");
paramList.add(deptCode);
}
sb.replace(sb.toString().length()-1, sb.toString().length(),"");
sb.append("))");
}
}
}
/**
* 封装返回结果集
* @param transferValue
* @param queryParam
* @return
*/
private List<BulkCargo> findBulkCargoResult(List<Object[]> transferValue,QueryParam queryParam){
List<BulkCargo> bulkCargoList=new ArrayList<BulkCargo>();
BulkCargo bulkCargo=null;
for(int i=0;i<transferValue.size();i++){
int number=0;
bulkCargo=new BulkCargo();
Object [] transferObj=transferValue.get(i);
//日期
bulkCargo.setQueryDate((Date)transferObj[number++]);
//始发网点
bulkCargo.setSrcZoneCode(transferObj[number++].toString());
//始发班次
bulkCargo.setSrcBatchCode(transferObj[number++].toString());
//线路编码
bulkCargo.setLineCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力名称
bulkCargo.setConveyanceName(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力类型
bulkCargo.setConveyanceType(ConveynceTypeEnum.getName(TypeUtil.intPrimValue(transferObj[number++])));
//线路等级
bulkCargo.setLineLevel(LineLevelEnum.getDesc(transferObj[number++]==null?"":transferObj[number-1].toString()));
//计划起飞,发车时间
bulkCargo.setPlanDepartTime((Date)transferObj[number++]);
//实际起飞,发车时间
bulkCargo.setActualDepartTime((Date)transferObj[number++]);
//计划落地,到达时间
bulkCargo.setPlanArriveTime((Date)transferObj[number++]);
//实际落地,到达时间
bulkCargo.setActualArriveTime((Date)transferObj[number++]);
//到达网点
bulkCargo.setDestZoneCode(transferObj[number++].toString());
//实际散货班次
bulkCargo.setActualBatchCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//运力实到票数
bulkCargo.setActualLoadCnt(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发班次编码
bulkCargo.setActualDepartBatchCode(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发票数
bulkCargo.setActualDepartCnt(transferObj[number++]==null?"":transferObj[number-1].toString());
//实发占比
bulkCargo.setActualDepartRatio(transferObj[number++]==null?"":transferObj[number-1].toString());
bulkCargoList.add(bulkCargo);
}
return bulkCargoList;
}
/**
* 查询数量
* @param queryParam
* @return
* @throws DaoException
*/
@Override
@SuppressWarnings("unchecked")
public int findBulkCargoSize(QueryParam queryParam) throws Exception {
final List<Object> paramList=new ArrayList<Object>();
final String sqlString = generateCountSQL(queryParam,paramList);
return ((Number) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createSQLQuery(sqlString);
if (paramList != null && paramList.size() > 0) {
Object[] values = paramList.toArray();
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return query.uniqueResult();
}
})).intValue();
}
/**
* 拼装汇总Sql
* @param queryParam
* @param paramList
* @return
*/
private String generateCountSQL(QueryParam queryParam,List<Object> paramList)throws Exception{
StringBuffer sb = new StringBuffer();
String sql="";
sql = SQLProvider.getSQL("cont_bulkCargo").trim();
sb.append(sql);
return this.setCommonQueryCondition(queryParam, paramList, sb);
}
发表评论
-
Elasticsearch 笔记
2019-09-25 15:33 317查询数据结构 GET ibmpdb_hk/_mapping ... -
模块之间调用form 表单提交
2018-11-30 14:11 438package com.soft.util; imp ... -
ELK搭建笔记
2018-11-20 16:41 367一. 安装elasticsearch 1.yum安装 ... -
Mybatis xml 写法
2017-09-28 11:14 603<?xml version="1.0&qu ... -
maven
2017-07-03 14:48 473项目中pom.xml 文件 <repositorie ... -
qq 微信第三方登录
2017-06-20 15:53 0QQ互联 https://connect.qq.com ... -
Active Mq 扫盲
2017-05-17 19:33 3981.下载ActiveMQ 去官方网站下载:http://a ... -
金融知识点
2017-04-15 16:24 0国信证券地址 http://weixin.guosen.c ... -
java 集合初始化
2017-01-04 14:55 433ArrayList1.ArrayList构造一个默认初始容 ... -
log 4j
2017-09-28 10:51 401### set log levels ### log4j ... -
POI 导出Excel
2016-08-15 11:07 470import java.io.OutputStream; ... -
demo
2016-07-29 17:17 0<div class="iteye-blog- ... -
ETL
2016-05-09 11:25 3551.在D 视图下创建 数据源 在工具栏中找到sourc ... -
java 配置linux 启动节点
2016-04-28 17:06 720source ../jar.cfg nohup java ... -
搭建框架
2016-02-29 15:41 0package com.soft.util; import ... -
Java 对集合类的操作缓存
2015-05-12 15:08 1709public class CapacityGrapCache ... -
java 开发 oracle分页通用方法
2014-11-21 15:03 782package com.richsum.hyoa.dao.im ... -
Spring 配置
2013-06-05 20:34 861<?xml version="1.0" ... -
Hibernate 注解映射联合主键的三种方式
2012-10-31 10:27 1115联合主键用Hibernate注解映射方式主要有三种:第一、将联 ... -
jdbc 操作 批量插入数据
2012-10-21 15:20 927package com.soft.dzkj.dao; ...
相关推荐
Hibernate分页查询小结
标题与描述均提到了“Hibernate分页的设计和编码”,这表明文章主要聚焦于如何在Hibernate框架中实现数据分页功能。下面将详细解析这一主题的关键知识点。 ### Hibernate分页概念 Hibernate是Java环境下一个开放源...
#### 三、Hibernate分页查询实现原理 ##### 3.1 使用SQL LIMIT实现分页 对于支持LIMIT关键字的数据库(例如MySQL),Hibernate会通过特定的方言(Dialect)来生成包含LIMIT关键字的SQL语句。具体实现如下: ```...
本文将详细介绍一种通用的Hibernate分页方法,并通过一个具体的例子来说明其实现细节。 #### 二、分页概念解析 分页是指将数据分割成一系列的页面,每次只显示其中一页的数据。这种方式可以有效地减少单次查询的...
在Action类中,我们需要处理来自用户的请求参数,如当前页码和每页显示记录数等,并调用DAO中的分页查询方法获取数据。然后将这些数据传递给视图层进行展示。 #### 示例代码分析 下面是一个简化的示例代码片段,...
Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults属性来实现分页。FirstResult表示从结果集的第几个元素开始获取,MaxResults...
此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...
本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...
struts+spring+hibernate通用分页方法.rar 博文链接:https://igogogo9.iteye.com/blog/97692
hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...
总结起来,"hibernate分页代码"是一个关于如何在Hibernate中进行分页查询的实践示例,适用于在MyEclipse环境下运行。通过Criteria API或HQL,开发者能够方便地实现分页功能,提升应用性能,为用户提供更好的体验。...
在分页场景下,一个Action类可能会包含获取当前页数、每页显示条数以及执行查询等方法。当用户点击页面链接时,Struts会根据配置的Action Mapping将请求转发到对应的Action。 接下来是Hibernate的使用。在数据库...
3. **编写分页方法**:在Action类中,创建一个方法如`execute()`,在该方法内调用Hibernate的分页查询代码,然后将结果集封装到一个模型对象(如`UserPaginationModel`)中。 4. **配置Struts2的配置文件**:在`...
在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...
这里我们讨论的是结合Spring、Hibernate和MySQL实现的分页功能,这是一个常见的技术栈组合,广泛应用于Web应用开发。 Spring是一个开源的Java框架,它提供了全面的编程和配置模型,用于构建企业级应用。Spring的IoC...
java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring
Hibernate分页教学视频 Hibernate分页教学视频 Hibernate分页教学视频
hibernate分页 博文链接:https://iomo.iteye.com/blog/243518
Hibernate分页封装 Hibernate是一个流行的Java持久化框架,提供了对数据库的访问和操作。然而,在实际开发中,分页是一种非常常见的需求,Hibernate也提供了相应的解决方案。下面,我们将对Hibernate分页封装进行...
一、Hibernate分页基础 1. Hibernate的Query和Criteria API都提供了分页功能。使用`setFirstResult()`方法设置查询开始的位置,即第几条记录,以及`setMaxResults()`方法设置一次返回的最大记录数,这两者结合即可...