http://fay19860916.blog.163.com/blog/static/1186491192009722105419936/
package com.ighost.dao.refactor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ighost.dao.DAOException;
import com.ighost.jdbc.JDBCUtil;
/**
* 模板模式
* 将行的映射交给子类去完成
* @author ghost
*
*/
public abstract class AbstraceDAO {
/**
* 查询
*/
public Object find(String sql, Object[] parms) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 建立连接
conn = JDBCUtil.getConnection();
// 创建prepareStatement
// 预处理操作
ps = conn.prepareStatement(sql);
if (parms.length > 0) {
for (int i = 0; i < parms.length; i++) {
ps.setObject(i + 1, parms[i]);
}
}
// 执行语句
rs = ps.executeQuery();
Object obj = null;
while (rs.next()) {
//将行的映射交给子类去完成
obj = rowMapper(rs);
}
return obj;
}
catch(SQLException e){
throw new DAOException(e.getMessage(),e);
}
finally {
JDBCUtil.free(rs, ps, conn);
}
}
abstract protected Object rowMapper(ResultSet rs) throws SQLException;
/**
* 更新
*/
public int update(String sql, Object[] parms) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 建立连接
conn = JDBCUtil.getConnection();
// 创建Statement
ps = conn.prepareStatement(sql);
if (parms.length > 0) {
for (int i = 0; i < parms.length; i++) {
ps.setObject(i + 1, parms[i]);
}
}
// 执行语句
return ps.executeUpdate();
} catch (SQLException e) {
throw new DAOException(e.getMessage(), e);
} finally {
JDBCUtil.free(rs, ps, conn);
}
}
}
------------------------------------------------------------------
package com.ighost.dao.refactor;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ighost.domain.User;
public class UserDaoImpl extends AbstraceDAO {
/**
* 根据用户名密码查询用户
*/
public User findUser(String loginName, String loginPass) {
String sql = "select id,name,password,lastlogin,money from user where name = ? and password = ?";
Object[] parms = new Object[]{
loginName,loginPass
};
return (User)super.find(sql, parms);
}
//映射字段
protected Object rowMapper(ResultSet rs) throws SQLException{
User user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setLastlogin(rs.getDate(4));
user.setMoney(rs.getFloat(5));
return user;
}
/**
* 添加用户
*/
public void addUser(User user) {
String sql = "insert into user(name, password, lastlogin, money) values(?,?,?,?) ";
Object[] parms = new Object[]{
user.getName(),
user.getPassword(),
new java.sql.Date(user.getLastlogin().getTime()),
user.getMoney()
};
super.update(sql, parms);
}
/**
* 更新用户
*/
public void update(User user) {
String sql = "update user set name=? , password=?, lastlogin=?, money=? where id = ?";
Object[] parms = new Object[] { user.getName(), user.getPassword(),
new java.sql.Date(user.getLastlogin().getTime()),
user.getMoney(), user.getId() };
super.update(sql, parms);
}
/**
* 删除用户
*/
public void delete(User user) {
String sql = "delete from user where id = ?";
Object[] parms = new Object[] { user.getId() };
super.update(sql, parms);
}
}