我要进行一个分组统计的功能,查询一张数据库表,然后把它显示在前台。但数据库表里面是没有相应的这个字段的。我先贴代码吧。
xml代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<hibernate-mapping> < class name= "cn.gzjp.base.cms.entity.ActivitySum" table= "tb_sms_join" >
<id name= "id" type= "java.lang.Integer" >
<column name= "id" />
<generator class = "native" >
<param name= "sequence" >activity_seq</param>
</generator>
</id>
<property name= "mdn" type= "java.lang.String" >
<column name= "mdn" length= "30" />
</property>
<property name= "activityId" type= "java.lang.Integer" >
<column name= "ACTIVITY_ID" length= "30" />
</property>
<property name= "joinTime" type= "timestamp" >
<column name= "JOIN_TIME" length= "20" />
</property>
</ class >
</hibernate-mapping> |
持久化的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class ActivitySum {
private Integer id;
private Integer activityId;
private String mdn;
private Date joinTime;
public ActivitySum() {
super ();
}
public ActivitySum(Integer id, Integer activityId, String mdn, Date joinTime) {
super ();
this .id = id;
this .activityId = activityId;
this .mdn = mdn;
this .joinTime = joinTime;
}
... |
我就是想进行对activityId分组统计,显示在前台是activityId这个字段和统计的数量。
我查数据库这层代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public PageList<ActivitySum> findByPage(ActivitySum entity, PageInfo pageInfo) {
PageList<ActivitySum> pList = new PageList<ActivitySum>();
List<ActivitySum> list= null ;
pList.setTotalCount( 20 );
if (entity != null ) {
if (entity.getMdn()!= null ){
}
if (entity.getJoinTime()!= null ){
}
if (entity.getMdn()== null &&entity.getJoinTime()== null ){
Session session = getBindDao().getSessionFactory().getCurrentSession();
String sql = "select activity_id activityId ,count(*) mdn from tb_sms_join group by activity_id" ;
SQLQuery sqlQuery = session.createSQLQuery(sql);
list = sqlQuery.list();
}
pList.setList(list);
return pList;
} else {
return pList;
}
} |
这个是开始加载页面时会调用到这个方法,就是在Action里面调用的。
action的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
package cn.gzjp.base.cms.web.action.system;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Autowired;
import cn.gzjp.base.cms.entity.ActivitySum;
import cn.gzjp.base.cms.entity.SmsJoin;
import cn.gzjp.base.cms.service.ActivitySumService;
import cn.gzjp.base.cms.service.CommonService;
import cn.gzjp.base.cms.web.action.CmsJsonAction;
import com.opensymphony.xwork2.Action;
@Namespace ( "/system" )
@Results ({
// @Result(name=Action.SUCCESS, type = "json", params={ // "excludeProperties","pageList\\.list\\[\\d+\\]\\.(cmsRights|cmsRoles)(1)*,pageList\\.list\\[\\d+\\]\\.cmsRight\\.(cmsRight|cmsRights|cmsRoles)(1)*", // "includeProperties","success,msg,pageList.*"}),//返回pageList到第三层属性 //返回主页面
@Result (name=CmsJsonAction.INDEX, type = "dispatcher" , location= "/system/activity-sum/index.jsp" )
}) public class ActivitySumAction extends CmsJsonAction<ActivitySum,Integer> {
@Autowired
private ActivitySumService activitySumService;
@Override
public CommonService getCommonService() {
return activitySumService;
}
@Override
public Integer[] getIds() {
return this .ids; }
@Override
public ActivitySum getModel() {
if ( this .model== null ){
this .model = new ActivitySum();
}
return this .model;
}
@Override
protected void prepareModel() throws Exception {
if ( this .model!= null && this .model.getId()> 0 ){
this .model = this .activitySumService.getByPk( this .model.getId());
}
}
public void prepareSave() throws Exception{
prepareModel();
if ( this .model!= null && this .model.getId()> 0 ){
this .model = this .activitySumService.getByPk( this .model.getId());
}
} @Override
public void setIds(Integer[] ids) {
this .ids = ids;
}
@Override
public void setModel(ActivitySum model) {
this .model = model;
}
@Override
public String list() throws Exception {
try {
log.debug( "list modol=" + getModel());
this .pageList = this .getCommonService().findByPage(getModel(),
getPageInfo());
log.debug( "list size=" + this .pageList.getList().size());
this .setSuccess( true );
this .setMsg( "成功" );
return SUCCESS;
} catch (Exception e) {
log.error( "list error." + e.getMessage(), e);
throw e;
}
}
} |
CmsJsonAction代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
@ParentPackage ( "json" )
@Results ({
/**
* 默认返回Result,如果对象有关联对象,请在子类中重写该Result
*/
@Result (name = Action.SUCCESS, type = "json" , params = { "includeProperties" , "success,msg,list.*,pageList.*" }),
@Result (name = Action.INPUT, type = "json" , params = { "includeProperties" , "success,msg,model.*" }),
@Result (name = CmsJsonAction.ERROR_INFO, type = "redirectAction" ,params={
"actionName" , "result-code" ,
"namespace" , "/system" ,
"method" , "findError" ,
"resultCode" , "${resultCode}"
}),
@Result (name = CmsJsonAction.LIST, type = "json" , params = { "includeProperties" , "success,msg,list.*" }),
@Result (name = CmsJsonAction.INFO, type = "json" , params = { "includeProperties" , "resultCode,success,msg" }) })
public abstract class CmsJsonAction<T,PK extends Serializable> extends ActionSupport implements
Preparable {
private static final long serialVersionUID = 1L;
protected Log log = LogFactory.getLog(getClass());
/**
* 返回消息.如:{success:true,msg:"成功"}
*/
public static final String INFO = "info" ;
/**
* 返回该action的主页面
*/
public static final String INDEX = "index" ;
/**
* 根据resultCode查询错误消息并返回
*/
public static final String ERROR_INFO = "errorInfo" ;
/**
* 查询全部
*/
public static final String LIST = "list" ;
...... |
extjs前台界面如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
Ext.onReady(function() { Ext.QuickTips.init(); // 初始化提示组件
// 查询工具条
var searchToolbar = new Ext.Toolbar({
items : [ "用户号码" ,{
id : 'model.mdn' ,
maxLength : 15 ,
xtype : "textfield" ,
maskRe:/\d/,
regex:/^[ 0 - 9 ]{ 0 , 11 }$/,
emptyText: '只能输入数字' ,
listeners:{
'specialKey' :function(field,e){
onSearchFieldEnter(field,e);
}
}
}, '-' , '日期' , '-' ,{
xtype : 'datefield' ,
id : 'model.joinTime' ,
format: "Y-m-d" ,
listeners:{
'specialKey' :function(field,e){
onSearchFieldEnter(field,e);
}
}
}, '-' ,{
xtype : 'button' ,
text : "查询" ,
iconCls : 'search' ,
listeners : {
"click" : function() {
grid.onRefresh();
}
}
}]
});
// 列表部分
var gridStructure = [{header: 'id' ,
name: "id" ,
width: 10 ,
hidden: true ,
sortable: true },{
header : '活动ID' ,
name : "activityId" ,
width: 100 },
{
header : '总数' ,
name : "mdn" ,
width: 200
//sortable : true
}];
/**
* 在条件输入框上回事执行查询功能
* @param {Ext.form.textfield} field
* @param {EventObject} e
*/
var onSearchFieldEnter = function(field,e){
if (e.getKey() == Ext.EventObject.ENTER) {
grid.onRefresh();
}
};
var form = new Ext.ux.form.BasicTableForm({
id : 'saveOrUpdateForm' ,
layoutConfig : {
columns : 1
// 每一行的表单数
},
autoHeight : true ,
waitMsgTarget : true ,
reader : new Ext.data.JsonReader({
successProperty : 'success' ,
root : 'model' ,
idProperty : 'id'
}, [{
name : 'model.id' ,
mapping : 'id'
}, // custom mapping
{
name: 'model.activityId' ,
mapping: 'activityId'
},
{
name: 'model.mdn' ,
mapping: 'mdn'
}])
});
var grid = new Ext.ux.grid.CrudGrid({
entityName : '显示页面' ,
entityCode : 'model' ,
region: 'center' ,
structure : gridStructure,
url : ctx + '/system/activity-sum!list.action' ,
defaultSortField : 'id' ,
keyField : 'id' ,
deleteUrl : ctx+ '/system/activity-sum!delete.action' ,
saveOrUpdateUrl : ctx+ '/system/activity-sum!save.action' ,
formLoadUrl : ctx+ '/system/activity-sum!input.action' ,
// 设置高度为页面页面高度
height : document.body.clientHeight,
searchTbar : searchToolbar,
saveOrUpdateForm : form,
//saveOrUpdateWindowWidth : 350,
//删除时,接收ids的参数名,不设置时默认为keyField+'s'
//deleteKeyField:'ids'
rowActionsShow: false , //操作列显示
dblclickUpdate: false , //行双击事件
showAddBtn: false , //新增按钮
showDeleteBtn: false //删除按钮
});
this .grid = grid;
var viewport = new Ext.Viewport({
layout: 'border' ,
applyTo:Ext.getBody(),
items:[grid]
});
}); |
相关推荐
01.教程简介_ExtJS4.2简介_SSH2基本框架搭建 02.编写几个通用的service方法、设计数据库 03.搭建ExtJS的MVC框架 04.主界面的搭建、登录功能和菜单树的生成 05.创建菜单树、前台保存用户信息 06.菜单树响应事件、我的...
通过Ajax技术,ExtJs与后端SSH框架进行数据交互,实现实时的数据显示和更新,提升用户体验。 系统架构上,前端部分采用ExtJs创建用户界面,用户可以通过搜索、分类浏览等方式找到所需的图书,同时支持在线购买、...
此外,SSH框架与Ext的集成通常通过Ajax技术实现,前端通过ExtJS发送异步请求,后端通过Spring MVC接收并处理这些请求,返回JSON格式的数据,再由ExtJS解析并更新界面。这种前后端分离的方式提高了系统的响应速度,也...
最近自己动手做了一个后台使用struts2+Hibernate+Spring 前台使用extjs的工程当作练习。...后续可以通过日期或者内容进行查询和修改。 主要的练习点在 1 SSH框架的搭建和使用; 2 extjs组件化创建。
本项目前台采用EXTJS设计,后台用SSH框架,数据库为MYSQL,适合初学EXTJS者参考,希望能帮助到大家。。。
SSH框架+Ext技术做前台显示的客户关系管理系统 营销管理:客户开发计划、销售机会管理 二、客户管理:客户信息管理、客户流失管理 三、服务管理:服务创建、服务分配、服务反馈、服务归档 四、统计报表:客户服务...
在这个“SSH2注解ExtJs前台返回Json的一个增删改查demo”中,我们将探讨如何利用这些技术实现前后端交互,特别是通过Json格式进行数据交换。 首先,让我们了解SSH2中的每个组件: 1. **Spring**:作为基础架构层,...
并且以进销存管理平台的权限管理系统为切入点对系统运用的ExtJS技术和SSH2框架进行分析,在系统分析设计中展示ExtJS多级动态树结构如何在权限管理系统中应用并实现Ajax技术的异步加载树节点功能,并因此提高权限管理...
了解java框架技术,熟悉SSH框架搭建的全过程 目标三. 可以让学员迅速掌握JEasyUI的API及使用技巧 目标四. 可以让学员熟练使用JEasyUI快速构通富客户端的界面及与后台服务器交互的注意事项与技巧 目标五. 通过...
包括采用UML实现系统模型,用Struts实现前台显示与后台业务的分离,用Hibernate实现数据库的对象化操作,用Spring实现托管和属性值的依赖注入,采用基于DWR的Ajax实现异步刷新,采用ExtJS富客户端技术丰富页面表现和使得...
它利用成熟的SSH框架实现了高效的后端逻辑,借助Mysql数据库存储数据,采用ExtJs提供用户友好的前端交互,并且具备协同工作和实用工具等附加功能,满足了用户在个人和团队环境下的笔记管理和信息查询需求。
在本项目中,“三层架构Structs2+Spring+Hibernate前台Ext”是Java Web开发中的一种常见组合,用于构建基于浏览器-服务器(BS)模式的应用。 1. **Struts2**:Struts2是一个基于MVC(Model-View-Controller)设计...
虽然ExtJS4自身已经包含了一些jQuery的功能,但可能在某些特定场景下,开发者选择使用jQuery1.7来处理一些特定的前端需求或兼容性问题。 综上所述,"JavaSSH做的精品课程系统"是一个综合运用了Java后端三大框架和...
中小企业ERP管理系统销售管理子系统设计与实现是基于J2EE的SSH框架、ExtJS前台、Struts框架应用层、Hibernate框架对象关系映射、Spring框架管理容器的设计和实现。该系统旨在实现中小企业销售管理子系统的设计和实现...
本文将详细介绍如何利用SSH2(Struts2 + Spring + Hibernate)框架结合ExtJS前端库实现文件上传功能。具体包括前端界面设计、JavaScript交互逻辑以及后端处理流程。 #### 二、前端实现 ##### 1. 前台页面设计 **...
在系统实现阶段,本文档通过详细介绍SSH框架的具体实现方式,展示了如何将系统需求转化为实际的代码实现。同时,通过系统截图展示了系统的操作界面,直观地展示了系统的功能和操作流程。系统测试阶段,本文档进行了...
- 在SSH(Struts + Spring + Hibernate)架构中,Action层实例化接口并调用方法,DAO层进行数据库操作。 2. **接口安全性** - 确保敏感信息加密传输。 - 验证用户权限。 ### 五、同步与异步 1. **同步** - ...
除了SSH框架之外,系统还使用了ExtJS框架来实现前台页面。ExtJS是一个用于创建富客户端Web应用程序的框架,提供了一整套丰富的界面组件,例如数据表格、树形控件、菜单等。它能够创建与桌面应用程序相媲美的交互界面...