81,094
社区成员
发帖
与我相关
我的任务
分享
package com.vanda.dao;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import java.sql.*;
public class DbConnection{
private static final Logger log = Logger.getLogger(DbConnection.class);
public static final String databasesource = "jdbc/JG_TALK";
public static final String jdbcUrl="jdbc:oracle:thin:@192.168.1.2:1521:ORCL";
public static final String username="JG_TALK";
public static final String password="JJJJJJ";
public static Connection getConnection(){
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup(databasesource);
conn = ds.getConnection();
} catch (SQLException e) {
log.error("从连接池获取连接失败!" + e.getMessage());
throw new NullPointerException("无法连接数据库!");
} catch (NamingException e) {
log.error("寻找数据源失败!" + e.getMessage());
throw new NullPointerException("无法连接数据库!");
}
return conn;
}
public static Connection getConnection2(){
Connection conn=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn= DriverManager.getConnection(jdbcUrl, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
package com.vanda.bean;
public class PageBean {
private int page; //当前页
private int rowCountPerpage; //每页记录数
private int totalRows; //总记录数
private int pageCount; //总页数
private int iBegin; //当前页第一条记录行编号
private int pageRowCount; //当前页记录数
private String sql;
public PageBean(){}
public PageBean(int page,int rowCountPerpage){
this.page = page;
this.rowCountPerpage = rowCountPerpage;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRowCountPerpage() {
return rowCountPerpage;
}
public void setRowCountPerpage(int rowCountPerpage) {
this.rowCountPerpage = rowCountPerpage;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getIBegin() {
return iBegin;
}
public void setIBegin(int iBegin) {
this.iBegin = iBegin;
}
public int getPageRowCount() {
return pageRowCount;
}
public void setPageRowCount(int pageRowCount) {
this.pageRowCount = pageRowCount;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}
package com.vanda.dao;
import org.apache.log4j.Logger;
import java.sql.*;
import com.vanda.bean.PageBean;
public class QueryPage {
private static final Logger log = Logger.getLogger(QueryPage.class);
private String sql; //查询sql
private int page; //当前页
private int rowCountPerpage; //每页记录数
private int totalRows = 0; //总页数
private int pageCount = 0; //页数
private int iBegin = 0; //
private int pageRowCount = 0; //当前页记录数
public QueryPage(String sql,int page,int rowCountPerpage){
this.sql = sql;
this.page = page;
this.rowCountPerpage = rowCountPerpage;
}
/**
* 查询总页数
*/
public void queryTotalRows(){
String sql1 = "select count(1) from (" + sql + ")";
Connection conn = null;
PreparedStatement pstmt = null;
log.info("开始执行 SQL:" + sql);
try{
conn = DbConnection.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql1,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pstmt.executeQuery();
//rs.last();
//totalRows = rs.getRow();
while(rs.next()){
totalRows = rs.getInt(1);
}
rs.close();
}catch(SQLException e){
log.error("查找总记录数失败:" + e.getMessage()+"SQL:"+sql1);
try{
conn.rollback();
}catch(SQLException ex){
log.error("数据回滚失败:" + ex.getMessage());
}
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLException ex1){
log.error("关闭连接失败:" + ex1.getMessage());
}
}
}
/**
* 得出总页数
*/
public void queryPageCount(){
pageCount = (totalRows + rowCountPerpage - 1)/rowCountPerpage;
//int pageCount = (totalRows%rowCountPerpage)==0?(totalRows/rowCountPerpage):(totalRows/rowCountPerpage+1);
if(pageCount < 1){
pageCount = 1;
}
}
/**
* 得到当前页数
*/
public void queryPage(){
if(page < 1){
page = 1;
}
if(page > pageCount){
page = pageCount;
}
}
/**
* 获取当前页第一条记录的行编号
*/
public void queryIBegin(){
iBegin = rowCountPerpage * (page - 1) + 1;
}
/**
* 获取当前页记录数
*/
public void queryPageRowCount(){
int num = totalRows - rowCountPerpage * (page - 1);
pageRowCount = (num >= rowCountPerpage) ? rowCountPerpage : num;
}
/**
* 获取查询参数
* @return
*/
public PageBean query(){
PageBean pageBean = new PageBean();
this.queryTotalRows();//总记录数
this.queryPageCount();//总页数
this.queryPage();//当前页
this.queryIBegin();//当前页第一条记录的行编号
this.queryPageRowCount();//当前页记录数
int iEnd = iBegin + pageRowCount;
//解析sql,得到分页后查询sql
String pageSql = "SELECT T2.* FROM (SELECT T1.*, ROWNUM AS RN FROM ( " + sql + " ) T1 ";
pageSql = pageSql + " ) T2 WHERE ";
pageSql = pageSql + " T2.RN < " + iEnd + " AND ";
pageSql = pageSql + " T2.RN >=" + iBegin;
//将参数封装在bean中
pageBean.setTotalRows(totalRows);
pageBean.setPageCount(pageCount);
pageBean.setPage(page);
pageBean.setIBegin(iBegin);
pageBean.setPageRowCount(pageRowCount);
pageBean.setSql(pageSql);
return pageBean;
}
}
function getChildProdPageInfo(childProdDescLink,newsCount,pageIdx,pageDivId)
{
var pageItemHtml='';
var pageForwardHtml = '';
var pageReverseHtml = '';
var isExtend = false;
var pageInfoHtml='';
for(idx=0,len=newsCount;idx<len;idx++)
{
//判断是否第一页,如是,不加上一页链接,如不是,加上一页连接
if((idx+1)==(pageIdx-1)&&pageIdx!=1)
{
pageForwardHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx-1)+',\''+pageDivId+'\')" >上一页</a>';
}
//判断是否最后一页,如是,不加下一页链接,否则加上下一页链接
if(pageIdx<len&&(idx+1)==(pageIdx+1))
{
pageReverseHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx+1)+',\''+pageDivId+'\')" >下一页</a>';
}
//判断是否超过6页,如果超过,加extend扩展,否则加每一页的连接
if(Math.abs(idx+1-pageIdx)>5&&isExtend==false)
{
pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >...</a>';
isExtend=true;
}
else
{
//当前页
if((idx+1)==pageIdx)
{
pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+','+pageDivId+'\')" >'+'<font class="red">['+pageIdx+']</font>'+'</a>';
}
else
{
pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >'+(idx+1)+'</a>';
}
isExtend=false;
}
}
//组合最终的分页信息并打开当前点击页的咨询连接
pageInfoHtml+='<div class="Page">';
pageInfoHtml+=pageForwardHtml;
pageInfoHtml+=pageItemHtml;
pageInfoHtml+=pageReverseHtml;
pageInfoHtml+='</div>';
$('#'+pageDivId).html(pageInfoHtml);
//刷新静态化html咨询页面
var index = childProdDescLink.indexOf('html');
var htmlPath = '/webfin/'+childProdDescLink.substr(0,(index-1))+'_'+pageIdx+'.html';
window.open(htmlPath,"prodDetailHtmliFrame");
}
参考如上,之前写的,支持"上一页2,3,4,5...下一页"这种,当前页高亮显示,传的数据格式自己定,前端分页