java中常用的帮助类。加快开发速度

数据库帮助类

package com.cwnu.uitl;

import java.sql.*;

/**
* 数据库基础操作实现类
* 
* @author BlackWinter
* 
* @date 2009-9-7 上午01:16:19
* 
* @file com.ebook.dao.DbHelper.java
* 
* @version 3.0
*/
public class DbHelper {

// 数据库名
final static String database = "boaidb";

// 数据库连接方法
final static ConnectionType mode = ConnectionType.JDBC_MySQL;

// 服务器IP
final static String server = "localhost";

// 用户名
final static String userName = "root";

// 密码
final static String password = "123456";

// 编码格式
final static String encode = "UTF-8";

/**
* 创建通用连接
* 
* @return 连接对象
*/
public static Connection createConn() {
   if (mode == ConnectionType.JDBC_ODBC_BRIDGE) {
    // SQLServer桥连接
    return getConn("sun.jdbc.odbc.JdbcOdbcDriver",
      "jdbc:odbc:driver=sql server;server=" + server
        + ";database=" + database);
   } else if (mode == ConnectionType.JDBC_MICROSOFT) {
    // SQLServer JDBC连接
    return getConn("com.microsoft.sqlserver.jdbc.SQLServerDriver",
      "jdbc:sqlserver://" + server + ":1433;DataBaseName="
        + database);
   } else if (mode == ConnectionType.JDBC_MySQL) {
    // MySQL连接
    return getConn("com.mysql.jdbc.Driver", "jdbc:mysql://" + server
      + ":3306/" + database + "?characterEncoding=" + encode);
   } else if (mode == ConnectionType.JDBC_ORACLE) {
    // Oracle连接
    return getConn("oracle.jdbc.driver.OracleDriver",
      "jdbc:oracle:thin:@" + server + ":1521:ORCL");
   }
   return null;
}

/**
* 创建专用连接
* 
* @param driver:驱动名称
* @param url:连接地址
* @param userName:用户名
* @param password:密码
* @return:连接对象
*/
public static Connection createConn(String driver, String url,
    String userName, String password) {
   try {
    Class.forName(driver);
    return DriverManager.getConnection(url, userName, password);
   } catch (ClassNotFoundException ex) {
    System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
   } catch (SQLException ex) {
    System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
   }
   return null;
}

/**
* 启动事务
* 
* @param conn
*            连接对象
*/
public static void beginTransaction(Connection conn) {
   try {
    conn.setAutoCommit(false);
   } catch (SQLException ex) {
    System.out.println(ex.getMessage());
   }
}

/**
* 提交事务
* 
* @param conn
*            连接对象
*/
public static void commitTransaction(Connection conn) {
   try {
    conn.commit();
   } catch (SQLException ex) {
    System.out.println(ex.getMessage());
   }
}

/**
* 回滚事务
* 
* @param conn
*            连接对象
*/
public static void rollbackTransaction(Connection conn) {
   try {
    conn.rollback();
   } catch (SQLException ex) {
    System.out.println(ex.getMessage());
   }
}

/**
* 执行数据库的增删改方法.
* 
* @param sqlstr
*            增删改Sql语句
* @param conn
*            连接对象
* @return 是否成功
*/
public static boolean execUpdate(String sqlstr, Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行更新操作...");
    return false;
   }
   try {
    Statement ps = conn.createStatement();
    return (ps.executeUpdate(sqlstr) != -1);
   } catch (SQLException ex) {
    System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
    return false;
   }
}

/**
* 执行数据库的增删改方法
* 
* @param sqlstr
*            增删改Sql语句
* @param conn
*            连接对象
* @return 影响的行数
*/
public static int execUpdateCounts(String sqlstr, Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行更新操作...");
    return 0;
   }
   try {
    Statement ps = conn.createStatement();
    return (ps.executeUpdate(sqlstr));
   } catch (SQLException ex) {
    System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
    return 0;
   }
}

/**
* 执行数据库的插入删除方法. 如进行Insert操作.sql语句为:insert into
* testTable(字段1,字段2,字段3)values(?,?,?); 调用的时候需传入代替?号的对象数组.如: new
* Object[]{val1,val2,val3}
* 
* @param sqlstr
*            增删改的Sql语句
* @param sqlParam
*            Sql参数
* @param conn
*            连接对象
* @return 是否成功
*/
public static boolean execUpdate(String sqlstr, Object[] sqlParam,
    Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行更新操作...");
    return false;
   }
   try {
    PreparedStatement ps = conn.prepareStatement(sqlstr);
    for (int i = 0; i < sqlParam.length; i++) {
     ps.setObject(i + 1, sqlParam[i]);
    }
    return (ps.executeUpdate() != -1);
   } catch (SQLException ex) {
    System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
    return false;
   }
}

/**
* 
* @param sqlstr
*            查询Sql语句
* @param conn
*            连接对象
* @return ResultSet结果集
*/
public static ResultSet execQuery(String sqlstr, Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行查询操作...");
    return null;
   }
   try {
    Statement ps = conn.createStatement();
    return ps.executeQuery(sqlstr);
   } catch (SQLException ex) {
    System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
    return null;
   }
}

/**
* 执行数据库的查询方法.外面操作完结果集,请记住调用close方法 list:SQL参数. 调用的时候需传入代替?号的对象数组. 如:new
* Object[]{val1,val2,val3}
* 
* @param sqlstr
*            查询sql语句
* @param sqlParam
*            sql参数
* @param conn
*            连接对象
* @return ResultSet结果集
*/
public static ResultSet execQuery(String sqlstr, Object[] sqlParam,
    Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行查询操作...");
    return null;
   }
   try {
    PreparedStatement ps = conn.prepareStatement(sqlstr);
    for (int i = 0; i < sqlParam.length; i++) {
     ps.setObject(i + 1, sqlParam[i]);
    }
    return ps.executeQuery();
   } catch (SQLException ex) {
    System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
    return null;
   }
}

/**
* 使用存贮过程查询
* 
* @param sql
*            存储过程执行语句。如:"{call GetRecordAsPage(?,?,?,?)}"
* @param sqlParam
*            存储过程参数
* @param conn
*            连接对象
* @return ResultSet结果集
*/
public static ResultSet execCall(String sql, Object[] sqlParam,
    Connection conn) {
   if (conn == null) {
    System.out.println("数据联接对象为空.不能进行查询操作...");
    return null;
   }
   try {
    PreparedStatement ps = conn.prepareCall(sql);
    for (int i = 0; i < sqlParam.length; i++) {
     if (sqlParam[i] == null) {
      ps.setNull(i + 1, 2);
     } else {
      ps.setObject(i + 1, sqlParam[i]);
     }
    }
    return ps.executeQuery();
   } catch (SQLException ex) {
    System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
    return null;
   }
}
/**
* 创建连接
* @param driver 连接驱动 
* @param url 连接字符串
* @return 连接对象
*/
private static Connection getConn(String driver, String url) {
   try {
    Class.forName(driver);
    return DriverManager.getConnection(url, userName, password);
   } catch (ClassNotFoundException ex) {
    System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
   } catch (SQLException ex) {
    System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
   }
   return null;

}

/**
* 数据库类型枚举
* 
* @author BlackWinter
* 
* @date 2009-9-30 上午11:17:20
* 
* @file com.black.dao.impl.DbHelper.java
* 
*/
public enum ConnectionType {
   JDBC_ODBC_BRIDGE, JDBC_MICROSOFT, JDBC_MySQL, JDBC_ORACLE
}
}


 

数据抽象类

package com.zz.bean;

import java.util.ArrayList;
import java.util.Map;



/**
 * Bean接口类
 * @author zz
 *
 */
public interface BaseBean {
	/**
	 * 添加一条数据,使用Map,对应数据库中表的字段
	 * @param entity
	 * @return
	 * @throws Exception
	 */
	public boolean Add(Map<String, Object> entity) ;
	public boolean Del(int id);
	public boolean Update(Map<String, Object> entity) throws Exception;
	public Map<String, Object> FindOne(int id);
	public Map<String, Object> FindOne(String condtion);
	/**
	 * 
	 * @return
	 * @throws Exception
	 */
	public ArrayList<Map<String, Object>> FindList() throws Exception;
	/**
	 * 返回分页数据
	 * @param offset
	 * @param pagecount
	 * @return
	 * @throws Exception
	 */
	public ArrayList<Map<String, Object>> FindList(int offset,int pagecount,String condition);
	/**
	 * 返回数据记录数量
	 * @return
	 */
	public int GetCount();
	/**
	 * 根据条件返回数量
	 * @param condtion
	 * @return
	 */
	public int GetCount(String condtion) ;

}


 

数据实现类

package com.zz.bean;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.Cookie;

import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
import com.zz.uitl.DbHelper;

/**
 * 数据数的操作实现类
 * @author zz
 *
 */
public class BeanImpl implements BaseBean {

	private Connection conn;
	private String tbname;//表名
	private ArrayList<String> filed;//字段
	public BeanImpl(){}
	public BeanImpl(String tbname)
	{
		conn=DbHelper.createConn();
		filed=new ArrayList<String>();
		this.tbname=tbname;
		if(conn!=null)
		{
			System.out.println("数据库连接成功的");
		}
		Statement st;
		try {
			st = conn.createStatement();
			String sql="select * from "+tbname;
			ResultSet rs = st.executeQuery(sql);
			ResultSetMetaData meta = rs.getMetaData();
			for (int i = 1; i <= meta.getColumnCount(); i++)
			{    
			     String columnName = meta.getColumnName(i).toLowerCase();
			     filed.add(columnName);//往字段队列中添加
			}
			rs.close();//关闭连接
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
	}
	public boolean Add(Map<String, Object> entity) {
		String filed="";
		String val="";
		Object[] param=new Object[entity.size()];//创建一个和entity大小相等的数组
		int i=0;
		for (Map.Entry<String, Object> item : entity.entrySet())
		{
			filed+=item.getKey()+",";
			val+="?"+",";
			param[i]=item.getValue();
			i++;
		}
		filed=filed.substring(0, filed.length()-1);//去除最后一个逗号
		val=val.substring(0, val.length()-1);//去除最后一个逗号
		String sql="insert into "+tbname+"("+filed+") values("+val+")";
		System.out.println("sql语句:"+sql);
		return DbHelper.execUpdate(sql, param, conn);
	}

	/*
	 * 删除操作
	 * @see com.cwnu.bean.BaseBean#Del(int)
	 */
	public boolean Del(int id) {
		String sql="delete from "+tbname+" where id="+id;
		return DbHelper.execUpdate(sql, conn);
	}

	/*
	 * 更新数据的方法
	 * @see com.cwnu.bean.BaseBean#Update(java.util.Map)
	 */
	public boolean Update(Map<String, Object> entity) throws Exception {
		String upString="";
		Object[] param=new Object[entity.size()];//创建一个和entity大小相等的数组
		int i=0;
		for (Map.Entry<String, Object> item : entity.entrySet())
		{
			upString+=item.getKey()+"=?,";
			param[i]=item.getValue();
			i++;
		}
		upString=upString.substring(0, upString.length()-1);//去除最后一个逗号
		
		String sql="update  "+tbname+" set "+upString+" where id="+entity.get("id");
		System.out.println("sql语句:"+sql);
		return DbHelper.execUpdate(sql, param, conn);
	}

	public Map<String, Object> FindOne(int id)  {
	
		String sql="select * from "+tbname+" where id="+id;

		ResultSet rs=DbHelper.execQuery(sql, conn);
		try {
			if(rs.next())
			{
				Map<String,Object> item=new HashMap<String, Object>();
				//获取一个Map对象
				for (int i = 0; i < filed.size(); i++) {
					item.put(filed.get(i), rs.getObject(filed.get(i)));
				}
				return item;
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	public ArrayList<Map<String,Object>> FindList() throws Exception {
		
		ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
		
		String sql="select * from "+tbname;

		ResultSet rs=DbHelper.execQuery(sql, conn);
		while(rs.next())
		{
			Map<String,Object> item=new HashMap<String, Object>();
			//获取一个Map对象
			for (int i = 0; i < filed.size(); i++) {
				item.put(filed.get(i), rs.getObject(filed.get(i)));
			}
			list.add(item);
			
		}
		return list;
	}
	public ArrayList<Map<String,Object>> FindList(int offset,int pagecount,String where) {
		
		ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
		
		//String sql="select * from "+tbname+" "+where+" limit "+offset+","+pagecount+" ";
		
		String sql="select * from %s  %s  limit  ?,? ";
		Object[] param=new Object[]{offset,pagecount};
		
		sql=String.format(sql, tbname,where);
		System.out.println(sql);

		ResultSet rs=DbHelper.execQuery(sql, param,conn);
		try {
			while(rs.next())
			{
				Map<String,Object> item=new HashMap<String, Object>();
				//获取一个Map对象
				for (int i = 0; i < filed.size(); i++) 
				{
						item.put(filed.get(i), rs.getObject(filed.get(i)));
				}
				list.add(item);
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	public int GetCount() {
		String sql="select count(*) from "+tbname;
		Statement st;
		try {
			st = conn.createStatement();
			ResultSet rs = st.executeQuery(sql);
			int count=-1;
			if(rs.next())
			{
				count=rs.getInt(1);
			}
			return count;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return -1;
	}
	public int GetCount(String condtion) {
		String sql="select count(*) from "+tbname+" "+condtion;
		Statement st;
		try {
			st = conn.createStatement();
			ResultSet rs = st.executeQuery(sql);
			int count=-1;
			if(rs.next())
			{
				count=rs.getInt(1);
			}
			return count;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return -1;
	}
	public Map<String, Object> FindOne(String condtion) {
		String sql="select * from "+tbname+"  "+condtion;
		System.out.println(sql);
		ResultSet rs=DbHelper.execQuery(sql, conn);
		try {
			if(rs.next())
			{
				Map<String,Object> item=new HashMap<String, Object>();
				//获取一个Map对象
				for (int i = 0; i < filed.size(); i++) {
					item.put(filed.get(i), rs.getObject(filed.get(i)));
				}
				return item;
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

}


 

原文地址:https://www.cnblogs.com/zhujunxxxxx/p/3344858.html