JDBC的CRUD操作中使用策略模式
2010-08-20 21:06
555 查看
在CRUD中使用策略模式,来生成具体的想要得到的类的对象要优于使用模板方法模式(个人认为
)
下面是实体bean的定义
DAO接口的定义
DAO的实现类:
转化类接口:
转化类的实现
Ok这样我们就可以根据查询出来的结果使用策略模式来生成具体的查询出来的结果类的对象了。
)
下面是实体bean的定义
package viekie.du.jdbc.domain; import java.util.Date; public class User { private int id; private String username; private String password; private Date date; private float money; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; } }
DAO接口的定义
package viekie.du.jdbc.dao; import viekie.du.jdbc.domain.User; import viekie.du.jdbc.userDaoImpl.MappingToUser; public interface UserDao { public void addUser(String sql, Object... objs); public User getUser(String sql, MappingToUser map, Object... objs); public void update(String sql, Object... objs); public void delete(String sql, Object... objs); }
DAO的实现类:
package viekie.du.jdbc.userDaoImpl; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import java.sql.PreparedStatement; import viekie.du.jdbc.DBUtil; import viekie.du.jdbc.dao.UserDao; import viekie.du.jdbc.domain.User; import viekie.du.jdbc.exception.UserDaoException; public abstract class AbstractUserDaoImpl implements UserDao { private void setPreparedStatementParameter(PreparedStatement pstmt, Object[] obj) throws SQLException { for (int i = 0; i < obj.length; i++) { try { pstmt.setObject(i + 1, obj[i]); } catch (SQLException e) { e.printStackTrace(); throw new SQLException(e); } } } @Override public void addUser(String sql, Object... objs) { Connection conn = null; PreparedStatement pstmt = null; DBUtil dbutil = null; try { dbutil = DBUtil.getInstance(); conn = dbutil.getConnection(); pstmt = conn.prepareStatement(sql); setPreparedStatementParameter(pstmt, objs); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); throw new UserDaoException(e.getMessage(), e); } finally { dbutil.releaseStatemetn(pstmt); dbutil.releaseConnection(conn); } } @Override /** * * 这个getUser方法是用了策略模式来生成每一个对象,所以当生成的对象,只需要传进来用来生成对象的方法就可以了 */ public User getUser(String sql, MappingToUser map, Object... objs) { Connection conn = null; PreparedStatement pstmt = null; DBUtil dbutil = null; ResultSet rs = null; try { dbutil = DBUtil.getInstance(); conn = dbutil.getConnection(); setPreparedStatementParameter(pstmt, objs); rs = pstmt.executeQuery(); map = new MappingToUserImpl(); return map.mapResultSetToUser(rs); } catch (SQLException e) { e.printStackTrace(); throw new UserDaoException(e.getMessage(), e); } finally { dbutil.releaseStatemetn(pstmt); dbutil.releaseConnection(conn); } } }
转化类接口:
package viekie.du.jdbc.userDaoImpl; import java.sql.ResultSet; import java.sql.SQLException; import viekie.du.jdbc.domain.User; public interface MappingToUser { public User mapResultSetToUser(ResultSet rs) throws SQLException; }
转化类的实现
package viekie.du.jdbc.userDaoImpl; import java.sql.ResultSet; import java.sql.SQLException; import viekie.du.jdbc.domain.User; public class MappingToUserImpl implements MappingToUser{ @Override public User mapResultSetToUser(ResultSet rs) throws SQLException { User usr = new User(); usr.setId(rs.getInt("id")); usr.setUsername(rs.getString("username")); usr.setPassword(rs.getString("passwrod")); usr.setDate(rs.getDate("birthday")); usr.setMoney(rs.getFloat("money")); return usr; } }
Ok这样我们就可以根据查询出来的结果使用策略模式来生成具体的查询出来的结果类的对象了。
相关文章推荐
- JDBC的CRUD操作中使用模板模式
- java 使用策略模式操作JDBC数据库
- 使用JDBC对数据库进行CRUD的操作
- JDBC学习笔记 -- day04 使用jdcb实现CRUD操作
- 使用JDBC操作数据库(CRUD基本操作)
- Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具
- 使用模板方法模式简化JDBC操作
- 带你玩转javaWeb之七-使用JDBC完成CRUD的操作
- MySQL学习(五)——使用JDBC完成用户表CRUD的操作
- Spring对JDBC封装时使用的一种CallBack来参数化一个操作的模式
- JDBC(2) 使用JDBC实现CRUD操作
- JDBC之使用策略模式和模板方法模式优化代码
- xml-使用dom4j对xml文件进行crud操作
- Silverlight 2 (beta1)数据操作(2)——使用ASP.NET Web Service进行数据CRUD操作(下)
- 使用单例模式设计JDBC连接数据库
- java 使用 jdbc 操作mysql (快速了解)
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
- 使用Mycat操作Oracle数据库(七) -- JAVA代码JDBC连接Mycat
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- JDBC_使用ResultSet 执行查询操作(基于oracle数据库)