日期:2014-05-16 浏览次数:20823 次
这是我个人采用策略模式设计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;
}
}
?