dao中的方法
/**
* 根据pid还有交易状态查询出交易成功的交易记录然后进行时间倒序
*/
public List<Shopnote> getSuccessList(String pid, int tradeStatus) {
List<Shopnote> Shopno = new ArrayList<Shopnote>();// 初始化list
Query query = sf
.getCurrentSession()
.createQuery(
"from Shopnote as Shopn where Shopn.userPid=:pid and tradeStatus=:tradeStatus order by Shopn.tradeTime desc")
.setString("pid", pid).setInteger("tradeStatus", tradeStatus);//sql语句
//如果大于0则返回给list
if (query.list().size() > 0) {
Shopno = query.list();
}
return Shopno;
}
/**
* 根据根据userPid、交易状态、交易时间、交易流水号进行查询
*/
public List searchSucc(String userPid, int tradeStatus, String tradeTime,
String tradeNumber) {
Criteria c = sf.getCurrentSession().createCriteria(Shopnote.class);// 初始化Criteria
if(userPid!=null&&
!userPid.equals("")){
c.add(Restrictions.like("userPid",userPid,MatchMode.ANYWHERE));//根据userPid查询
}
if(tradeStatus>-1){
c.add(Restrictions.sqlRestriction("tradeStatus ="+tradeStatus));//根据交易状态查询
}
if(tradeTime!=null&&
!tradeTime.equals("")){
c.add(Restrictions.like("tradeTime",tradeTime,MatchMode.ANYWHERE));//根据交易时间查询
}
if(tradeNumber!=null&&
!tradeNumber.equals("")){
c.add(Restrictions.like("tradeNumber",tradeNumber,MatchMode.ANYWHERE));//根据交易流水号查询
}
return c.list();
}
action中的方法
/**
* 根据id查询全部的方法
* @return
* @throws Exception
*/
public String getshopID() throws Exception {
String faild="find";//跳转的返回
if(id==0){
faild="find"; //跳转到登录注册页面
}else{
usres=shopnoteService.getUser(id);//根据id查询
listshop=shopnoteService.getAlllLst(usres.getUserPid());//根据Userpid查询
if(listshop.size()<1){
ActionContext.getContext().put("message", "<font color='red'>尊敬的用户,您没有消费交易记录</font>");//设定页面返回信息
}
// 获取当前会话
HttpSession session = ServletActionContext.getRequest()
.getSession();
// 将登陆的用户保存到SessionScope中
session.setAttribute("user", usres);
faild="toShopno";//跳转到用户交易记录信息页面
}
return faild;
}
/**
* 查询全部交易记录的方法
* @return
* @throws Exception
*/
public String selShopno() throws Exception {
String filePath="toShopno";//返回值
String tradeTime=year+"-"+yue;//设定时间
listshop=shopnoteService.search(userPid, tradeStatus, tradeTime, tradeNumber, tradeType);//联合查询
if(listshop.size()<1){
ActionContext.getContext().put("message", "<font color='red'>尊敬的用户,没有您要查询的信息!</font>");//设定页面返回信息
}
return filePath;
}
页面的代码
<s:iterator var="listshop" value="listshop">
<tr>
<td height="25" bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeTime.substring(0, 10)" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeNumber" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeType" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeRecords" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeAmount" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradePreferential" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:if test="#listshop.tradeStatus==1">
已支付
</s:if>
<s:else>
未支付
</s:else>
</td>
</tr>
</s:iterator>
可不可以根据前台显示的结果直接分页。一开始点进去是默认显示全部的。然后是根据查询条件下边做的显示。小弟想的是都是在一个迭代循环中显示的。可不可以直接根据这个显示迭代进行分页。
/**
* 根据pid还有交易状态查询出交易成功的交易记录然后进行时间倒序
*/
public List<Shopnote> getSuccessList(String pid, int tradeStatus) {
List<Shopnote> Shopno = new ArrayList<Shopnote>();// 初始化list
Query query = sf
.getCurrentSession()
.createQuery(
"from Shopnote as Shopn where Shopn.userPid=:pid and tradeStatus=:tradeStatus order by Shopn.tradeTime desc")
.setString("pid", pid).setInteger("tradeStatus", tradeStatus);//sql语句
//如果大于0则返回给list
if (query.list().size() > 0) {
Shopno = query.list();
}
return Shopno;
}
/**
* 根据根据userPid、交易状态、交易时间、交易流水号进行查询
*/
public List searchSucc(String userPid, int tradeStatus, String tradeTime,
String tradeNumber) {
Criteria c = sf.getCurrentSession().createCriteria(Shopnote.class);// 初始化Criteria
if(userPid!=null&&
!userPid.equals("")){
c.add(Restrictions.like("userPid",userPid,MatchMode.ANYWHERE));//根据userPid查询
}
if(tradeStatus>-1){
c.add(Restrictions.sqlRestriction("tradeStatus ="+tradeStatus));//根据交易状态查询
}
if(tradeTime!=null&&
!tradeTime.equals("")){
c.add(Restrictions.like("tradeTime",tradeTime,MatchMode.ANYWHERE));//根据交易时间查询
}
if(tradeNumber!=null&&
!tradeNumber.equals("")){
c.add(Restrictions.like("tradeNumber",tradeNumber,MatchMode.ANYWHERE));//根据交易流水号查询
}
return c.list();
}
action中的方法
/**
* 根据id查询全部的方法
* @return
* @throws Exception
*/
public String getshopID() throws Exception {
String faild="find";//跳转的返回
if(id==0){
faild="find"; //跳转到登录注册页面
}else{
usres=shopnoteService.getUser(id);//根据id查询
listshop=shopnoteService.getAlllLst(usres.getUserPid());//根据Userpid查询
if(listshop.size()<1){
ActionContext.getContext().put("message", "<font color='red'>尊敬的用户,您没有消费交易记录</font>");//设定页面返回信息
}
// 获取当前会话
HttpSession session = ServletActionContext.getRequest()
.getSession();
// 将登陆的用户保存到SessionScope中
session.setAttribute("user", usres);
faild="toShopno";//跳转到用户交易记录信息页面
}
return faild;
}
/**
* 查询全部交易记录的方法
* @return
* @throws Exception
*/
public String selShopno() throws Exception {
String filePath="toShopno";//返回值
String tradeTime=year+"-"+yue;//设定时间
listshop=shopnoteService.search(userPid, tradeStatus, tradeTime, tradeNumber, tradeType);//联合查询
if(listshop.size()<1){
ActionContext.getContext().put("message", "<font color='red'>尊敬的用户,没有您要查询的信息!</font>");//设定页面返回信息
}
return filePath;
}
页面的代码
<s:iterator var="listshop" value="listshop">
<tr>
<td height="25" bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeTime.substring(0, 10)" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeNumber" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeType" />
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeRecords" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradeAmount" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:property value="#listshop.tradePreferential" />
元
</td>
<td bgcolor="#FFFFFF" class="border_bm">
<s:if test="#listshop.tradeStatus==1">
已支付
</s:if>
<s:else>
未支付
</s:else>
</td>
</tr>
</s:iterator>
可不可以根据前台显示的结果直接分页。一开始点进去是默认显示全部的。然后是根据查询条件下边做的显示。小弟想的是都是在一个迭代循环中显示的。可不可以直接根据这个显示迭代进行分页。
解决方案 »
- 应该是数据库版本问题吧
- javamail 编程问题
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 紧急求助:请各位路过的好汉帮帮忙,java 调用 .net webservice速度较慢
- 请帮我解答一下数据库连接时候的问题。。。感谢
- 拜求一SQL语句
- 高分求帮助:根据图象文件,如果知道该图象文件生成IMAGE对象时占用的内存,急.
- 急!大家帮我看看哪不对啊? 查了好久了5555
- 如何取得到客户端计算机名称,然后写入到服务器的日志里面?
- 我在Servlet中打开一个文本文件,并且不想使用绝对路径,那么这个文件应该放在什么地方那?
- get方法tomcat环境, 在windows正常 Linux乱码
- 关于weblogic11的发布问题
- 缓存设置问题~
不明白你那样设计有何意义
是要这样的么.?
。这只是一个想法。都可以只要做出来就行。我现在的分页一开始分。查询之后就分不了。
在查询的时候就分好的话:
在Dao层的方法里面传入这个Page对象, 分页分好了以后,你前台拿到的就已经是分毫页的数据了.!
如果你非要前台分页,那就是数据库每次根据where条件查出来全部的,这个集合赋值给Action的属性,每次前台还是要根据这个page对象,你那个iterator标签可以设置begin end属性的, 把你的起始数据和药多少条数据用page对象的相应属性赋值上去, 不就ok了.? 当然你如果查询条件变了就再去查一次数据库
1、页面上得定义一个参数:当前页。并且点击上一页和下一页的时候这个参数分别-1和+1
2、控制层做几个处理:a、根据你一页要显示多少条数据和当前页去判断要查询哪几条数据,比如每页显示15条数据,当前页是第四页,那么下一页就因该显示61-75条数据,这个控制的参数我习惯性叫它游标。b、计算出总页数。
3、dao层做两件事:a、查询总数。因为要知道一起分了多少也,这个总数就不能少。b、根据游标进行查询,并且返回结果。若每页显示15条数据,那么这个查询就只查询出15条数据。具体实现的话有很多方法,可以用jdbc也可以用hibernate。他们都提供了分页的方法。
先查一下有多少条记录,然后根据start和limit返回给前台相应记录。千万不能一次性都加载了,然后前台再分页,那样的话数据一多,就玩完。我会共享源码的 你可以参考一下