baseDAO定义了可以用于所有类的基本的CRUD操作,
但是由于不同的对象,有不同的sql语句
不同的bean对象就要使用不同的DAO层来操作,
比如bean里面有个book对象,就要创建一个bookDAO类来实现对与book对象的CRUD,
bean层
DAO层
baseDAO类
package DAO;
import java.lang.reflect.ParameterizedType;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
public class baseDAO<T> {
Class<T> type;
QueryRunner qr=new QueryRunner();
baseDAO(){
ParameterizedType Ptype=(ParameterizedType)this.getClass().getGenericSuperclass();
type=(Class<T>) Ptype.getActualTypeArguments()[0];
}
int addbean(String sql,Object...params){
Connection conn=JDBCutils.getConnection();
int result=0;
try {
result=qr.execute(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
DbUtils.closeQuietly(conn);
}
return result;
}
int deletebean(String sql,Object...params){
Connection conn=JDBCutils.getConnection();
int result=0;
try {
result=qr.execute(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
DbUtils.closeQuietly(conn);
}
return result;
}
int updatebean(String sql,Object...params){
Connection conn=JDBCutils.getConnection();
int result=0;
try {
result=qr.execute(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
DbUtils.closeQuietly(conn);
}
return result;
}
T getbean(String sql,Object...params) {
Connection conn=JDBCutils.getConnection();
T result=null;
try {
result=qr.query(conn, sql, new BeanHandler<T>(type),params);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
List<T> getbeanlist(String sql,Object...params) {
Connection conn=JDBCutils.getConnection();
List<T> result = null;
try {
result=qr.query(conn, sql, new BeanListHandler<T>(type),params);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}
userDAO类
package DAO;
import java.util.List;
import bean.User;
public class userDAO extends baseDAO<User>{
public int adduser(User user) {
int result=0;
String sql="insert into user(id,name,sex,age)values(?,?,?,?);";
Object[] params= {user.getId(),user.getName(),user.getSex(),user.getAge()};
result=addbean(sql, params);
return result;
}
public int deleteuser(User user) {
int result=0;
String sql="delete from user where id=?;";
Object[] params= {user.getId()};
result=deletebean(sql, params);
return result;
}
public int updateuser(User user) {
int result=0;
String sql="UPDATE user name=?,age=?,sex=? WHERE id=?;";
Object[] params= {user.getName(),user.getAge(),user.getSex(),user.getId()};
result=updatebean(sql, params);
return result;
}
public User getuser(User user) {
String sql="select * from user WHERE id=?;";
Object[] params= {user.getId()};
user=getbean(sql,params);
return user;
}
public List<User> getuserList(User user) {
String sql="select * from user WHERE id=?;";
Object[] params= {user.getId()};
List<User> result;
result=getbeanlist(sql,params);
return result;
}
}