JDBC通用工具包

xiaoxiao2021-02-28  75

import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.Properties; import org.apache.commons.dbcp2.BasicDataSource; /** * DBCP数据库连接工具类需要 * 1.mysql驱动 * 2.dbcp相关插件(jar包,附名结尾处) */ public class DBUtils { //连接数据库基本属性 private static String driverClass; private static String url; private static String username; private static String password; //连接池属性 private static int initSize; private static int maxSize; private static int maxIdle; private static long maxWait; //数据源 private static BasicDataSource bds; //初始化数据源配置 static{ init(); } public static void init(){ try { //创建数据源对象 bds = new BasicDataSource(); //加载属性文件,获取属性信息 Properties props = new Properties(); props.load(DBUtils.class.getResourceAsStream("jdbc.properties")); driverClass = props.getProperty("driver"); url = props.getProperty("url"); username = props.getProperty("user"); password = props.getProperty("password"); initSize = Integer.parseInt(props.getProperty("initSize")); maxSize = Integer.parseInt(props.getProperty("maxSize")); maxIdle = Integer.parseInt(props.getProperty("maxIdle")); maxWait = Long.parseLong(props.getProperty("maxWait")); //设置驱动类路径 bds.setDriverClassName(driverClass); //设置url bds.setUrl(url); //设置用户名 bds.setUsername(username); //设置密码 bds.setPassword(password); //设置初始连接数 bds.setInitialSize(initSize); //设置最大连接 bds.setMaxTotal(maxSize); //设置最大闲置连接数 bds.setMaxIdle(maxIdle); //等待获取连接的最大时间(MS) bds.setMaxWaitMillis(maxWait); } catch (IOException e) { e.printStackTrace(); } } //获取连接 public static Connection getConn(){ try { if(bds == null || bds.isClosed()){ init(); } return bds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return null; } //封装资源回收的方法 public static void close(ResultSet rs,Statement stat,Connection conn){ try { if(rs != null) rs.close(); if(stat != null) stat.close(); if(conn != null)conn.close(); } catch (SQLException e) { e.printStackTrace(); } } /** * 通用增删改操作 */ public static boolean execUpdate(Connection conn,String sql,Object ...objs){ try { PreparedStatement ps = conn.prepareStatement(sql); for (int i = 0; i < objs.length; i++) { ps.setObject(i+1, objs[i]); } int i = ps.executeUpdate(); return i>0 ? true:false; } catch (SQLException e) { e.printStackTrace(); } return false; } /** * C++钩子函数 回调函数 * 集合查询 */ public static <T> List<T> queryList(String sql,CallBack<T> call,Object...params){ Connection conn = DBUtils.getConn(); PreparedStatement ps = null; try { ps = conn.prepareStatement(sql); for(int i = 0;i<params.length;i++) { ps.setObject(i+1, params[i]); } ResultSet rs = ps.executeQuery(); return call.getDatas(rs); } catch (SQLException e) { e.printStackTrace(); } return null; } /** * 查询一条记录 */ public static <T> T queryOne(String sql,CallBack<T> call,Object...params) { Connection conn = DBUtils.getConn(); PreparedStatement ps = null; try { ps = conn.prepareStatement(sql); for(int i = 0;i<params.length;i++) { ps.setObject(i+1, params[i]); } ResultSet rs = ps.executeQuery(); return call.getData(rs); } catch (SQLException e) { e.printStackTrace(); } return null; } //查询返回接口 jdk1.8支持 // public interface CallBack<T>{ // default List<T> getDatas(ResultSet rs){ // return null; // } // default T getData(ResultSet rs){ // return null; // } // } //jdk1.8以下使用抽象类 public static abstract class CallBack<T>{ public List<T> getDatas(ResultSet rs){ return null; } public T getData(ResultSet rs){ return null; } } } /** 需要的jar包: 1)MySQL驱动包:mysql-connector-java-5.1.39-bin.jar 2)dbcp2连接池包: commons-collections4-4.1.jar commons-dbcp2-2.1.1.jar commons-logging-1.2.jar commons-pool2-2.4.2.jar */ import java.sql.ResultSet; import java.sql.SQLException; import com.softeem.dbutils.DBUtils; import com.softeem.dbutils.DBUtils.CallBack; /** * 测试方法举例 */ public class Test { public static void main(String[] args) { //添加操作 // DBUtils.execUpdate(DBUtils.getConn(), // "insert into tbuser(username,password) values(?,?)", // "lilyandlucy","123321"); //查询操作 DBUtils.queryOne("select * from tbuser where id=?", new CallBack<Object[]>() { @Override public Object[] getData(ResultSet rs) { try { if(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("username"); String pass = rs.getString("password"); System.out.println(id+"--"+name+"--"+pass); } } catch (SQLException e) { e.printStackTrace(); } return super.getData(rs); } }, 10148); } }
转载请注明原文地址: https://www.6miu.com/read-61218.html

最新回复(0)