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; } }
相关文章推荐
- 30. 代码实例-设计模式-回调方式使用模板方法
- 黑马程序员 JDBC_使用模板方法设计模式处理DAO中的方法(李勇老师)
- 设计模式之---模板方法template method的使用
- iOS App使用设计模式中的模板方法模式开发的示例
- linux 设计模式(模板方法)的使用
- 详解C#设计模式编程中的模板方法模式使用
- 使用模板方法设计模式处理DAO中的查询方法
- JAVA设计模式-21-模板方法模式
- 设计模式-模板方法的使用
- java设计模式之模板模式以及钩子方法使用
- 使用模板方法模式实现可扩展性设计(Java示例)
- 设计模式——行为型之使用模板方法(Template Method Pattern)模式尽量减少重复相似的代码段(一)
- 第六个设计模式之:模板方法
- 白话设计模式--行为型模式--Template Method模式(模板方法模式)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式(1)- 模板方法 Template Method Pattern
- 设计模式笔记(十五) —— 模板方法模式
- Groovy探索之闭包 七 使用闭包来实现模板方法模式
- 设计模式学习之 模板方法模式
- 设计模式--模板方法模式(照旧,有类关系图)