JDBCUtilsByDruid类的模板与BasicDAO的模板
2023-08-30
JDBCUtilsByDruid类
import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtilsByDruid { private static DataSource ds; static { Properties properties = new Properties(); try { properties.load(new FileInputStream("src\\druid.properties")); ds = DruidDataSourceFactory.createDataSource(properties); } catch (IOException e) { throw new RuntimeException(e); } catch (Exception e) { throw new RuntimeException(e); } } //获取连接 public static Connection getConnection() throws SQLException { return ds.getConnection(); } //关闭连接 public static void close(ResultSet resultSet, Statement statement,Connection connection){ try { if(resultSet!=null){ resultSet.close(); } if(statement!=null){ statement.close(); } if(connection!=null){ connection.close(); } } catch (SQLException e) { throw new RuntimeException(e); } } }
BasicDAO类
import com.hh.jdbc.datasource_.JDBCUtilsByDruid; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import java.sql.Connection; import java.sql.SQLException; import java.util.List; public class BasicDAO<T> { private static QueryRunner qr = new QueryRunner(); //DML public int update(String sql,Object... parameter){ Connection connection = null; try { connection = JDBCUtilsByDruid.getConnection(); return qr.update(connection, sql, parameter); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCUtilsByDruid.close(null,null,connection); } } //查询返回多个对象 public List<T> queryMulti(String sql,Class<T> clazz,Object... parameter){ Connection connection = null; try { connection = JDBCUtilsByDruid.getConnection(); return qr.query(connection,sql,new BeanListHandler<T>(clazz),parameter); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCUtilsByDruid.close(null,null,connection); } } //查询返回对象 public T querySingle(String sql,Class<T> clazz,Object... parameter){ Connection connection = null; try { connection = JDBCUtilsByDruid.getConnection(); return qr.query(connection,sql,new BeanHandler<T>(clazz),parameter); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCUtilsByDruid.close(null,null,connection); } } //查询返回Object public Object queryScalar(String sql,Object... parameter){ Connection connection = null; try { connection = JDBCUtilsByDruid.getConnection(); return qr.query(connection,sql,new ScalarHandler(),parameter); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCUtilsByDruid.close(null,null,connection); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南