首页>代码>java servlet开发企业网站,支持角色权限管理,文章增删改查>/enterprice/src/edu/nuc/projdemo/common/DBUnitHelper.java
package edu.nuc.projdemo.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

public class DBUnitHelper {

	/**
	 * 获取数据库链接
	 * @return
	 */
	public static Connection getConn(){
		Connection conn = null;	
		try {
			
			DbUtils.loadDriver("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "auth", "123456");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public static Integer executeUpdate(String sql,Object ...objects){
		
		Connection conn = getConn();
		QueryRunner qr = new QueryRunner();
		Integer rtn = 0;
		try {
			if(objects == null){
				rtn = qr.update(conn, sql);
			}else{
				rtn = qr.update(conn, sql, objects);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				DbUtils.close(conn);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}		
		return rtn;
	}
	
	public static Integer executeUpdate(String sql){
		return executeUpdate(sql, null);
	}
	
	public static <T> List<T> executeQuery(String sql,Class<T> cls,Object ...objects){

		Connection conn = getConn();
		List<T> list = null;
		try{
			QueryRunner rq = new QueryRunner();
			if(objects == null){
				list = rq.query(conn, sql,new BeanListHandler<T>(cls)); 
			}else{
				list = rq.query(conn, sql,new BeanListHandler<T>(cls),objects); 
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				DbUtils.close(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return list;
	}
	
	public static <T> List<T> executeQuery(String sql,Class<T> cls){
		return executeQuery(sql,cls,null);
	}
	
	/**
	 * 带分页的查询
	 * @param sql SQL语句
	 * @param map SQL参数
	 * @param pc 分页控制对象,需要传递参数:当前第几页(currentindex),每页显示多少行:(pagesize)
	 * 分页控件显示多少也:showpcount
	 * @return
	 */
	public static <T> Pager<T> execlist(String sql,PageControl pc,Class cls,Object...object){

		//获取总记录数sql		 
		String sqlcount = "select count(*) as count from ("+sql+") a";
		//获取具体数据的SQL语句
		String sqllist = "select * from (select rownum rm ,a.* from(" +
				sql+") a where rownum<=" +pc.getCurrentindex()*pc.getPagesize()+
				") b where b.rm>"+(pc.getCurrentindex()-1)*pc.getPagesize();
		
		Connection conn = getConn();
		Pager<T> pager = new Pager<T>();
		try {
			
			QueryRunner rq = new QueryRunner();
			Object count = rq.query(conn, sqlcount, new ScalarHandler<Object>("count"), object);
			List<T> list = executeQuery(sqllist,cls,object);
			//设置总记录数
			Integer c = 0;
			if(count!=null){
				c=Integer.parseInt(count.toString());
			}
			pc.setRscount(c);
			
			pager.setList(list);
			pc = dealpage(pc);
			pager.setPagectrl(pc);	
			DbUtils.close(conn);
		} catch (Exception e) {
			e.printStackTrace();
		}					
		return pager;
	}
	/**
	 * 处理分页参数
	 * @param pc
	 * @return
	 */
	private static PageControl dealpage(PageControl pc){
		//获取总页数
		Integer pagecount = pc.getRscount()/pc.getPagesize();
		if(pc.getRscount()%pc.getPagesize()>0){
			pagecount++;
		}
		pc.setPagecount(pagecount);
		
		//计算最大(最小)显示页数
		Integer showpcount = pc.getShowpcount();//分页一次显示多少页
		Integer maxpage = 0;//当前显示最大页码
		Integer minpage = 0;
		Integer index = pc.getCurrentindex();//当前第几页
		if(pagecount<=showpcount){//当总页数小于等于显示的页数时
			maxpage = pagecount;
			minpage = 1;
		}else{
			Integer buff = showpcount/2; //取中间数。maxpage=index+buff
			buff = index+buff;
			if(buff<=showpcount){
				maxpage = showpcount;
				minpage = 1;
			}else if(buff<pagecount){
				maxpage = buff;
				minpage = maxpage - showpcount + 1;
				
			}else if(buff>=pagecount){
				maxpage = pagecount;
				minpage = maxpage - showpcount + 1;
			}
		}
		pc.setMaxpage(maxpage);	
		pc.setMinpage(minpage);
		return pc;
	}
}
最近下载更多
2036495585  LV9 2023年9月26日
2063066273  LV2 2023年6月14日
xiaoying0820  LV1 2023年3月24日
liu2022  LV14 2022年7月31日
wanggongzi  LV1 2022年5月27日
www-chrome  LV6 2022年5月5日
zzz112  LV1 2022年4月21日
微信网友_5910834400677888  LV1 2022年4月10日
土豆侠  LV1 2022年3月2日
839749683  LV9 2021年12月21日
最近浏览更多
asddwh  LV12 2023年12月25日
颜菜菜  LV2 2023年12月19日
15234568145  LV1 2023年12月5日
bubian 2023年11月12日
暂无贡献等级
jiemomo  LV12 2023年10月19日
泓鼎168  LV19 2023年10月16日
ljfydm  LV2 2023年10月15日
2036495585  LV9 2023年9月26日
噜噜噜路口  LV2 2023年8月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友