可复用的update和find方法
来源:互联网 发布:我的世界登入器源码 编辑:程序博客网 时间:2024/04/27 21:54
update方法:
public static void update(String sql,Object params[]) throws SQLException{
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = getConnection();
st = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
st.setObject(i+1, params[i]);
}
st.executeUpdate();
}finally{
release(conn, st, rs);
}
}
find方法:
//策略模式UserHandler
public static Object query(String sql,Object params[],ResultSetHandler rsh) throws SQLException{
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = getConnection();
st = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
st.setObject(i+1, params[i]);
}
rs = st.executeQuery();
//这时候,程序拿到rs(结果集),框架的设计者 不知道该把rs封装到哪个对象 ,那就由用户去决定怎么去封装,框架的设计者暴露一个处理接口给用户,由用户去实现
return rsh.handler(rs);
}finally{
release(conn, st, rs);
}
}
}
//代表的resultSet处理器
interface ResultSetHandler{
public Object handler(ResultSet rs) throws SQLException;
}
//框架设计者写的一个处理器,这个处理器用于把rs的数据封装到bean
class BeanHandler implements ResultSetHandler{
private Class clazz; //记住结果集的数据封装到哪一个对象中
public BeanHandler(Class clazz){
this.clazz = clazz;
}
public Object handler(ResultSet rs) throws SQLException {
Object obj = null;
try {
obj = clazz.newInstance();
ResultSetMetaData meta = rs.getMetaData();
int columnNum = meta.getColumnCount();
if(rs.next()){
for(int i=1;i<=columnNum;i++){
Object value = rs.getObject(i); //取出某一列的数据
String columnName = meta.getColumnName(i); //当前列的列名
//id id
//name name
//money money
Field f = clazz.getDeclaredField(columnName); //根据列名,从对象查找相应的属性
f.setAccessible(true); //暴力反射以访问私有属性
f.set(obj, value); //把值赋到对象的属性上
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
- 可复用的update和find方法
- scala的 apply方法和update方法
- repaint,update和paint方法的区别
- SqlBulkCopy对象和SqlDataApter的Update方法
- 集合的add方法和update方法的区别
- grails find的分页和排序方法
- jquery方法find和filter的区别
- DataAdapter的Update方法
- mongodb 的update方法
- update 的封装方法
- 关于ScrollPane的update和RefreshPane方法的区别。
- hibernatetemplate 的update和saveOrupdate方法不能用的问题
- update的普通、封装、和类方法的写法!
- Viewer之update和refresh方法的区别
- mongodb中update方法的upsert和multi
- sip中update和re-invite方法的区别
- Scala语言 中的 apply 和 update 方法的使用
- jquery中find方法和children方法的区别
- 解决麻烦
- 5分钟教会五笔!!
- QT4-系统托盘图标的使用(一)
- svn
- 你
- 可复用的update和find方法
- [Oracle]分析函数——函数用法
- ssh之struts第二篇:struts的plugIn接口扩展
- 解读SVCHOST.EXE 病毒or系统进程?
- 按某个字段随机选择唯一一条记录
- B-样条曲线:系数计算
- 几种计算机语言的评价
- linux解压缩
- C#生成随机数