JDBC的CRUD操作中使用模板模式
来源:互联网 发布:阿瓦隆之王兵营数据 编辑:程序博客网 时间:2024/04/28 16:30
在JDBC编程中无非是写CRUD之类的操作,但是这里面有好多代码是重复的,所以能够重用这些代码是很重要的。所以引进了模板模式,来
增强代码的可重用性。
首先来看看实体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;
}
@Override
public String toString() {
return "name:" + this.username + " password:" + this.password + ": money:" + this.money;
}
}
DAO的建立
package viekie.du.jdbc.dao;
import viekie.du.jdbc.domain.User;
public interface UserDao {
public void addUser(String sql, Object... objs);
public User getUser(String sql, Object... objs);
public void update(String sql, Object... objs);
public void delete(String sql, Object... objs);
}
DAO的实现,这个类并没有实现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
/**
*
* 这个getUser方法是用了模板方法模式来生成每一个对象,
* 所以当生成的对象,只需要调用getUserFormResultSet方法就可以了,
* 然而这个方法的实现是在子类中进行实现。
*/
public User getUser(String sql, Object... objs) {
Connection conn = null;
PreparedStatement pstmt = null;
DBUtil dbutil = null;
ResultSet rs = null;
try {
dbutil = DBUtil.getInstance();
conn = dbutil.getConnection();
pstmt = conn.prepareStatement(sql);
setPreparedStatementParameter(pstmt, objs);
rs = pstmt.executeQuery();
return getUserFormResultSet(rs);
} catch (SQLException e) {
e.printStackTrace();
throw new UserDaoException(e.getMessage(), e);
} finally {
dbutil.releaseStatemetn(pstmt);
dbutil.releaseConnection(conn);
}
}
public abstract User getUserFormResultSet(ResultSet rs) throws SQLException;
}
在子类中实现了getUserFormResultSet方法,当我们在要生成其他的对象的时候,只需要改正这个子类就可以了,实现了解耦和。
package viekie.du.jdbc.userDaoImpl;
import java.sql.ResultSet;
import java.sql.SQLException;
import viekie.du.jdbc.domain.User;
public class UserDaoImpl extends AbstractUserDaoImpl{
public User getUserFormResultSet(ResultSet rs) throws SQLException{
User usr = new User();
if(rs.next()){
usr.setId(rs.getInt("id"));
usr.setUsername(rs.getString("username"));
usr.setPassword(rs.getString("password"));
usr.setDate(rs.getDate("birthday"));
usr.setMoney(rs.getFloat("money"));
}
return usr;
}
@Override
public void addUser(String sql, Object... objs) {
// TODO Auto-generated method stub
}
@Override
public void update(String sql, Object... objs) {
// TODO Auto-generated method stub
}
@Override
public void delete(String sql, Object... objs) {
// TODO Auto-generated method stub
}
}
- JDBC的CRUD操作中使用模板模式
- JDBC的CRUD操作中使用策略模式
- javaWeb-使用JDBC完成CRUD的操作
- 使用工厂模式的CRUD操作
- JDBC简单的CRUD操作
- 封装jdbc的crud操作
- 使用JDBC对数据库进行CRUD的操作
- 使用JDBC操作数据库(CRUD基本操作)
- JDBC(一 JDBC的基本操作CRUD)
- JDBC多表的CRUD操作
- jdbc对数据库的CRUD操作
- JDBC的基本操作(CRUD)
- JDBC之最基本的CRUD操作
- JAVA-JDBC完成CRUD的操作进阶
- JDBC操作数据库CRUD
- JDBC CRUD操作
- JDBC操作MySQL(crud)
- JDBC CRUD操作(五)
- 空白的贺年卡
- 疑惑:如何用hql语句查询前10条数据??求解!!!
- 新的开始
- ubuntun下实现了dnw2的usb文件传输
- C#连接Oracle 字符串
- JDBC的CRUD操作中使用模板模式
- SSH:使用事务和不使用事务的区别
- C语言平面几何5-两点确定一条直线
- C语言实现一维小波变换
- JDBC的CRUD操作中使用策略模式
- Linux下安装Apache PHP MYSQL
- 黑客常用工具介绍
- css学习笔记(基础篇)
- 编程就是用固定的人话去指挥电脑