您的位置:首页 > 其它

JDBC学习笔记(21):使用模板方法设计模式

2015-04-05 21:13 381 查看
向父类中添加查找方法:

package com.xxyh.jdbc.dao.refactor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.xxyh.jdbc.JdbcUtils;
import com.xxyh.jdbc.dao.DaoException;
public abstract class AbstractDao {

public Object find(String sql, Object[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
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(rs);
}
return obj;
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
} finally {
JdbcUtils.close(rs, ps, conn);
}
}

abstract protected Object rowMapper(ResultSet rs) throws SQLException;

/**
* 动态更新
* @param sql 更新语句
* @param args 需要传入的参数
* @return 返回结果条数
*/
public int update(String sql, Object[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);

for (int i = 0; i < args.length; i++)
ps.setObject(i+1, args[i]);

return ps.executeUpdate();
} catch (SQLException e) {
throw new DaoException(e.getMessage(),e);
} finally {
JdbcUtils.close(rs, ps, conn);
}
}
}


完善实现类:

package com.xxyh.jdbc.dao.refactor;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.xxyh.jdbc.domain.User;
public class UserDaoImpl extends AbstractDao{

public User findUser(String name) {
String sql = "select id, name, money, birthday from user where name=?";
Object[] args = new Object[] {name};
Object user = super.find(sql, args);
return (User)user;
}

public void delete(User user) {
String sql = "delete from user where id=?";
Object[] args = new Object[] {user.getId()};
super.update(sql, args);
}

public void update(User user) {
String sql = "udpate user set name=?,birthday=?,money=? where id=?";
Object[] args = new Object[] {user.getName(),user.getBirthday(),
user.getMoney(),user.getId()};
super.update(sql, args);
}
@Override
protected User rowMapper(ResultSet rs) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setMoney(rs.getFloat("money"));
user.setBirthday(rs.getDate("birthday"));
return user;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: