怎样用struts+hibernate实现分页功能

怎样用struts+hibernate实现分页功能,第1张

hibernate中不是有一个分页功能函数吗?直接调用就ok了,然后在页面中显示调用数据。加入你自己写过分页功能的语句的话,其实这个不难的。
Query q = sesscreateQuery("from DomesticCat cat");
qsetFirstResult(20);
qsetMaxResults(10);
List cats = qlist();

看错误:Every derived table must have its own alias 。你换了数据库,但是数据库的配置有些地方你没改,数据库方言要相应换成MYSQL的数据库方言。
<bean id="sessionFactory"
class="orgspringframeworkormhibernate3LocalSessionFactoryBean" lazy-init="true" >
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernatedialect">
orghibernatedialectOracle9Dialect
</prop>(这个地方就是hibernate的数据库方言)
<prop key="hibernateshow_sql">true</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/db/orm/</value>
</list>
</property>
</bean>
你把方言换成orghibernatedialect包下的orghibernatedialectMySQLDialect或者orghibernatedialectMySQL5Dialect试试,有问题再说。

用标签加hibernate就可以了,hibernate实现分页检索,就是findbypage,,页面就靠标签了,下面是标签类
public class PageTag extends BodyTagSupport {
/
serialVersionUID
/
private static final long serialVersionUID = -4686685719382532353L;
/
控件ID
/
private String styleId = null;
/
每页的页数
/
private int pageSize = 20;
/
显示的最大滚动页数
/
private int showPageCnt = 5;
/
request记录的PageView名
/
private String name = "";
/
样式
/
private String styleClass = "";
/
宽度
/
private String width = "100%";
/
@return the styleClass
/
public final String getStyleClass() {
return thisstyleClass;
}
/
@return the width
/
public final String getWidth() {
return thiswidth;
}
/
@param aStyleClass
the styleClass to set
/
public final void setStyleClass(String aStyleClass) {
thisstyleClass = aStyleClass;
}
/
@param aWidth
the width to set
/
public final void setWidth(String aWidth) {
thiswidth = aWidth;
}
/
开始
/
public final int doStartTag() throws JspException {
// 变量声明
final JspWriter writer = pageContextgetOut();
ServletRequest request = pageContextgetRequest();
String tagJsp = "";
// 控件生成
tagJsp = makePageViewJsp((PageView) requestgetAttribute(name));
try {
// 加入标签内容
writerprintln(tagJsp);
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
// 提示JSP错误
JspException exception = new JspException(
"[MatrixTag getOut()print]:" + egetMessage());
throw exception;
}
// 正常完了
return SKIP_BODY;
}
/
结束
/
public final int doEndTag() {
// 正常完了
return EVAL_PAGE;
}
/
生成控件

@param src
@return String
/
private String makePageViewJsp(PageView src) {
// 变量声明
StringBuffer outStr = new StringBuffer();
int minPage = 1;
int maxPage = 1;
// 样式
outStrappend("<table id='")append(styleId)append(
"' cellspacing='0' width='")append(thiswidth)append(
"' border='1' class='")append(thisstyleClass)append("'>")
append("\n");
outStrappend("<tr>")append("\n");
outStrappend("<td>")append("\n");
// 首页 上一页
if (srcgetPage() > 1) {
outStr
append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
append(styleId)
append("&page=1');\">")
append(PeraContantsAPP_BUNDLEgetString("propagefirst"))
append("</a>")append("\n");
outStrappend(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
append(styleId)append("&page=")append(srcgetPage() - 1)
append("');\">")append(
PeraContantsAPP_BUNDLEgetString("propageprev"))
append("</a>")append("\n");
} else {
outStrappend(" ")append(
PeraContantsAPP_BUNDLEgetString("propagefirst"))
append("\n");
outStrappend(" ")append(
PeraContantsAPP_BUNDLEgetString("propageprev"))append(
"\n");
}
// 页码
if (thisshowPageCnt > srcgetPageCnt()) {
minPage = 1;
maxPage = srcgetPageCnt();
} else {
if (srcgetPage() > (thisshowPageCnt - 1) / 2) {
minPage = srcgetPage() - (thisshowPageCnt - 1) / 2;
} else {
minPage = 1;
}
if (srcgetPageCnt() > minPage + thisshowPageCnt - 1) {
maxPage = minPage + thisshowPageCnt - 1;
} else {
maxPage = srcgetPageCnt();
minPage = srcgetPageCnt() - thisshowPageCnt + 1;
}
}
for (int i = minPage; i <= maxPage; i++) {
// 当前页
if (i != srcgetPage()) {
outStr
append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
append(styleId)append("&page=")append(i)append(
"');\">")append(i)append("</a>")append("\n");
} else {
outStrappend("<span class='menu_active'>")append(i)append(
"</span>")append("\n");
}
}
// 下一页 尾页
if (srcgetPage() < srcgetPageCnt()) {
outStrappend(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
append(styleId)append("&page=")append(srcgetPage() + 1)
append("');\">")append(
PeraContantsAPP_BUNDLEgetString("propagenext"))
append("</a>")append("\n");
outStrappend(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
append(styleId)append("&page=")append(srcgetPageCnt())
append("');\">")append(
PeraContantsAPP_BUNDLEgetString("propageend"))
append("</a>")append("\n");
} else {
outStrappend(" ")append(
PeraContantsAPP_BUNDLEgetString("propagenext"))append(
"\n");
outStrappend(" ")append(
PeraContantsAPP_BUNDLEgetString("propageend"))append(
"\n");
}
// 结束
outStrappend("</td>")append("\n");
outStrappend("</tr>")append("\n");
outStrappend("</table>")append("\n");
// 隐藏
outStrappend("<input type='hidden' id='page_")append(styleId)append(
"' name='page_")append(styleId)append("' value='")append(
srcgetPage())append("'/>")append("\n");
// 返回
return outStrtoString();
}
/
@return the name
/
public final String getName() {
return thisname;
}
/
@return the pageSize
/
public final int getPageSize() {
return thispageSize;
}
/
@return the showPageCnt
/
public final int getShowPageCnt() {
return thisshowPageCnt;
}
/
@return the styleId
/
public final String getStyleId() {
return thisstyleId;
}
/
@param aName
the name to set
/
public final void setName(String aName) {
thisname = aName;
}
/
@param aPageSize
the pageSize to set
/
public final void setPageSize(int aPageSize) {
thispageSize = aPageSize;
}
/
@param aShowPageCnt
the showPageCnt to set
/
public final void setShowPageCnt(int aShowPageCnt) {
thisshowPageCnt = aShowPageCnt;
}
/
@param aStyleId
the styleId to set
/
public final void setStyleId(String aStyleId) {
thisstyleId = aStyleId;
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12604542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存