021 分区组合条件分页查询 - bos
2017-08-17 15:42
274 查看
一、没有过滤条件的分区分页查询
1.先修改分页查询的请求地址url(#grid)
// 收派标准数据表格
$('#grid').datagrid( {
iconCls : 'icon-forward',
fit : true,
border : true,
rownumbers : true,
striped : true,
pageList: [30,50,100],
pagination : true,
toolbar : toolbar,
url : "subareaAction_pageQuery.action",
idField : 'id',
columns : columns,
onDblClickRow : doDblClickRow
});
2.编写SubareaAction.pageQuery
/**
* 分页查询分区
* @return
*/
public String pageQuery(){
subareaService.pageQuery(pageBean);
object2JsonAndWriteToResponse(pageBean, new String[]{"currentPage", "detachedCriteria", "pageSize", "decidedzone", "subareas"});
return NONE;
}
3.编写SubareaService.pageQuery
@Override
public void pageQuery(PageBean<Subarea> pageBean) {
subareaDao.pageQuery(pageBean);
}
4.在Subarea.hbm.xml中修改Region的延迟加载策略,禁止延迟加载
<many-to-one name="region" class="com.hao.bos.entity.Region" fetch="select" lazy="false">
<column name="region_id" length="32" />
</many-to-one>
二、带有过滤条件的分区分页查询
1.提供的表单序列化函数,用于将表单中的输入项转化为json对象
//表单序列化函数
$(function(){
$.fn.serializeJson = function() {
var serializeObj = {};
var array = this.serializeArray();
$(array).each(function(){
if (serializeObj[this.name]) {
if ($.isArray(serializeObj[this.name])) {
serializeObj[this.name].push(this.value);
} else {
serializeObj[this.name] = [ serializeObj[this.name], this.value ];
}
} else {
serializeObj[this.name] = this.value;
}
});
return serializeObj;
};
});
2.为查询窗口中的查询按钮绑定事件,处理函数内调用datagrid的load方法重新发送ajax请求,并且提交参数,参数为在查询框中输入的过滤条件(表单序列化)
$("#btn").click(function(){
//将制定的表单转化为json数据
var p = $("#searchForm").serializeJson();
//调用数据表格的load方法
$("#grid").datagrid("load",p);
//关闭查询窗口
$("searchWindow").window("close");
});
3.修改SubareaAction.pageQuery方法,增加过滤功能
/**
* 分页查询分区
* @return
*/
public String pageQuery(){
//获取离线查询对象
DetachedCriteria dc = pageBean.getDetachedCriteria();
//动态添加过滤条件
String addressKey = model.getAddresskey();
if(StringUtils.isNotBlank(addressKey)){
//添加过滤条件,根据地址关键字模糊查询
dc.add(Restrictions.like("addressKey", "%"+addressKey+"%"));
}
Region region = model.getRegion();
if(region != null){
String province = region.getProvince();
String city = region.getCity();
String district = region.getDistrict();
//注意省、市、区不是分区表里的,因此要做关联查询
//类似SQL的连接操作,r为对应关联类的别名,第一个参数要求为分区对象关联的对象的属性名称(Subarea.region)
dc.createAlias("region", "r");
if(StringUtils.isNotBlank(province)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.province", "%"+province+"%"));
}
if(StringUtils.isNotBlank(city)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.city", "%"+city+"%"));
}
if(StringUtils.isNotBlank(district)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.district", "%"+district+"%"));
}
}
subareaService.pageQuery(pageBean);
object2JsonAndWriteToResponse(pageBean, new String[]{"currentPage", "detachedCriteria", "pageSize", "decidedzone", "subareas"});
return NONE;
}
3.修改BaseDaoImpl.pageQuery代码,设置涉及关联查询时,封装数据的方式
//指定Hibernate封装对象的方式:涉及多表查询时,以查询的目标实体类型返回
detachedCriteria.setResultTransformer(DetachedCriteria.ROOT_ENTITY);
1.先修改分页查询的请求地址url(#grid)
// 收派标准数据表格
$('#grid').datagrid( {
iconCls : 'icon-forward',
fit : true,
border : true,
rownumbers : true,
striped : true,
pageList: [30,50,100],
pagination : true,
toolbar : toolbar,
url : "subareaAction_pageQuery.action",
idField : 'id',
columns : columns,
onDblClickRow : doDblClickRow
});
2.编写SubareaAction.pageQuery
/**
* 分页查询分区
* @return
*/
public String pageQuery(){
subareaService.pageQuery(pageBean);
object2JsonAndWriteToResponse(pageBean, new String[]{"currentPage", "detachedCriteria", "pageSize", "decidedzone", "subareas"});
return NONE;
}
3.编写SubareaService.pageQuery
@Override
public void pageQuery(PageBean<Subarea> pageBean) {
subareaDao.pageQuery(pageBean);
}
4.在Subarea.hbm.xml中修改Region的延迟加载策略,禁止延迟加载
<many-to-one name="region" class="com.hao.bos.entity.Region" fetch="select" lazy="false">
<column name="region_id" length="32" />
</many-to-one>
二、带有过滤条件的分区分页查询
1.提供的表单序列化函数,用于将表单中的输入项转化为json对象
//表单序列化函数
$(function(){
$.fn.serializeJson = function() {
var serializeObj = {};
var array = this.serializeArray();
$(array).each(function(){
if (serializeObj[this.name]) {
if ($.isArray(serializeObj[this.name])) {
serializeObj[this.name].push(this.value);
} else {
serializeObj[this.name] = [ serializeObj[this.name], this.value ];
}
} else {
serializeObj[this.name] = this.value;
}
});
return serializeObj;
};
});
2.为查询窗口中的查询按钮绑定事件,处理函数内调用datagrid的load方法重新发送ajax请求,并且提交参数,参数为在查询框中输入的过滤条件(表单序列化)
$("#btn").click(function(){
//将制定的表单转化为json数据
var p = $("#searchForm").serializeJson();
//调用数据表格的load方法
$("#grid").datagrid("load",p);
//关闭查询窗口
$("searchWindow").window("close");
});
3.修改SubareaAction.pageQuery方法,增加过滤功能
/**
* 分页查询分区
* @return
*/
public String pageQuery(){
//获取离线查询对象
DetachedCriteria dc = pageBean.getDetachedCriteria();
//动态添加过滤条件
String addressKey = model.getAddresskey();
if(StringUtils.isNotBlank(addressKey)){
//添加过滤条件,根据地址关键字模糊查询
dc.add(Restrictions.like("addressKey", "%"+addressKey+"%"));
}
Region region = model.getRegion();
if(region != null){
String province = region.getProvince();
String city = region.getCity();
String district = region.getDistrict();
//注意省、市、区不是分区表里的,因此要做关联查询
//类似SQL的连接操作,r为对应关联类的别名,第一个参数要求为分区对象关联的对象的属性名称(Subarea.region)
dc.createAlias("region", "r");
if(StringUtils.isNotBlank(province)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.province", "%"+province+"%"));
}
if(StringUtils.isNotBlank(city)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.city", "%"+city+"%"));
}
if(StringUtils.isNotBlank(district)){
//添加过滤条件,进行省份模糊查询 --- 涉及多表关联查询
dc.add(Restrictions.like("r.district", "%"+district+"%"));
}
}
subareaService.pageQuery(pageBean);
object2JsonAndWriteToResponse(pageBean, new String[]{"currentPage", "detachedCriteria", "pageSize", "decidedzone", "subareas"});
return NONE;
}
3.修改BaseDaoImpl.pageQuery代码,设置涉及关联查询时,封装数据的方式
//指定Hibernate封装对象的方式:涉及多表查询时,以查询的目标实体类型返回
detachedCriteria.setResultTransformer(DetachedCriteria.ROOT_ENTITY);
相关文章推荐
- 框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)
- 【重点###】SpringDataJPA的组合条件分页查询(笔记思路,便于忘了复习)页面:EasyUI
- JAVAEE——BOS物流项目06:分页查询、分区导出Excel文件、定区添加、分页问题总结
- 分享一个我自己写的支持多条件组合查询的分页存储过程
- jqGrid分页技术学习(九)spring jdbc多单条件组合查询
- Spring Data JPA 复杂/多条件组合分页查询
- C#-WebForm-★★★LinQ-数据的条件组合查询并进行分页展示(未加各种限定)★★★
- 多条件组合查询+分页 ---轉載的
- Spring Data JPA 复杂/多条件组合分页查询
- hibernate 多条件组合查询 之 sql 拼接
- Python数据库查询之组合条件查询-F&Q查询
- OpenJweb平台中自定义组合查询条件窗口的实现方式(经典之作)
- 分页&条件查询分页
- spring jpa动态条件查询并分页
- 简单的多条件分页查询
- 多条件查询以及分页存储过程(倒叙和顺序查询)
- 在用java 对hbase多条件组合查询过程中遇到的坎坷
- Struts2 多条件组合查询和准备默认数据
- ASP.NETMVC4 分页组合查询解决方法