日期:2014-05-16 浏览次数:20732 次
这是我个人采用策略模式设计JDBC模板类:(供大家参考)
package daoUtil.daoTemplate; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import jdbcUtil.JdbcUtil; import daoUtil.DAO; import daoUtil.PrimaryKeyer; import daoUtil.RowMapper; public class DAOTemplate implements DAO{ /**jdbc工具类*/ private JdbcUtil jdbcUtil=JdbcUtil.getInstance(); public int delete(String sql, Object[] args) throws SQLException { if(args==null||args.length==0){ return 0; } Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=jdbcUtil.getConnection(); ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); for(int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } return ps.executeUpdate(); }finally{ jdbcUtil.free(rs,ps,conn); } } public int update(String sql, Object[] args) throws SQLException { if(args==null||args.length==0){ return 0; } Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=jdbcUtil.getConnection(); ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); for(int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } return ps.executeUpdate(); }finally{ jdbcUtil.free(rs,ps,conn); } } public Object find(String sql, Object[] args,RowMapper rowMapper) throws SQLException { if(args==null||args.length==0){ return 0; } Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=jdbcUtil.getConnection(); ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); for(int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } rs=ps.executeQuery(); Object obj=null; while(rs.next()){ obj=rowMapper.rowMapping(rs); } return obj; }finally{ jdbcUtil.free(rs,ps,conn); } } public int getRecordCount(String tableName) throws SQLException { if(tableName==null||tableName.equals("")){ return 0; } int count=0; Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=jdbcUtil.getConnection(); String sql="select count(*) from "+tableName; ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); if(rs.next()){ count=rs.getInt(1); } }finally{ jdbcUtil.free(rs,ps,conn); } return count; } public int insert(String sql, Object[] args, int primaryKeyIndex,PrimaryKeyer primaryKeyer) throws SQLException { if(args==null||args.length==0){ return 0; } Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=jdbcUtil.getConnection(); ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); if(primaryKeyIndex<=-1){ for(int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } }else if(primaryKeyIndex>-1&&primaryKeyIndex<args.length){ for(int i=0;i<args.length;i++){ if(i==primaryKeyIndex){ ps.setObject(i+1,primaryKeyer.getPrimaryKey()); }else{ ps.setObject(i+1,args[i]); } } }else{ throw new IllegalArgumentException("设置主键位置不正确!"); } return ps.executeUpdate(); }finally{ jdbcUtil.free(rs,ps,conn); } } public Collection ObjectList(String sql, Object[] args,RowMapper rowMapper) throws SQLException { if(args==null||args.length==0){ return null; } Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; Collection list=null; try { conn=jdbcUtil.getConnection(); ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn); for(int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } list=new ArrayList(); rs=ps.executeQuery(); while(rs.next()){ Object obj=rowMapper.rowMapping(rs); list.add(obj); } }finally{ jdbcUtil.free(rs,ps,conn); } return list; } }
?