package com.strutscrud.model.dao.data;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
public abstract class AbstractDAO {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private Logger log=Logger.getLogger(this.getClass());
//关闭数据库以及相关资源
private void closeAll(){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
log.error("关闭ResultSet失败", e);
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
log.error("关闭Statement失败", e);
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
log.error("关闭Connection失败", e);
e.printStackTrace();
}
}
}
// 执行一个SQL语句,返回1成功0失败
protected int executeUpdate(String sql){
try {
con=ConFactory.getFactory().getConnection();
stmt = con.createStatement();
return stmt.executeUpdate(sql);
} catch (SQLException e) {
log.error("访问数据库失败", e);
e.printStackTrace();
} finally {
this.closeAll();
}
return 0;
}
//执行一组SQL语句,伴随事务控制
protected int executeUpdate(String[] sql){
try {
con=ConFactory.getFactory().getConnection();
con.setAutoCommit(false);
stmt = con.createStatement();
for(int i=0;i<sql.length;i++){
stmt.executeUpdate(sql[i]);
}
con.commit();
return 1;
} catch (SQLException e) {
log.error("访问数据库失败", e);
try {
con.rollback(); //回滚...
} catch (SQLException e1) {
log.error("回滚失败", e1);
e1.printStackTrace();
}
e.printStackTrace();
return 0;
} finally {
this.closeAll(); //调用closeAll()
}
}
// 通过SQL语句查询返回一组实体对象
protected List<?> findForList(String sql){
//TODO: getNewList是什么意思?this代表谁?
List<Object> list=this.getNewList();
Object obj=null;
DynamicEntity entity=null;
String key;
String value;
try {
con =ConFactory.getFactory().getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
//TODO: public interface ResultSetMetaData所属包java.sql
ResultSetMetaData rem= rs.getMetaData();
int ccount=rem.getColumnCount();
while(rs.next()) {
entity=new DynamicEntity();
for(int i=1;i<ccount+1;i++){
key=rem.getColumnName(i);
value=rs.getString(key);
entity.setValue(key, value);
}
obj=this.fillEntity(entity);
list.add(obj);
}
return list;
} catch (SQLException e) {
log.error("访问数据库失败", e);
e.printStackTrace();
} finally {
this.closeAll();
}
return list;
}
//通过SQL语句查询返回一个实体对象
protected Object findForEntity(String sql){
Object obj=null;
DynamicEntity entity=null;
String key;
String value;
try {
con =ConFactory.getFactory().getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rem= rs.getMetaData();
int ccount=rem.getColumnCount();
if (rs.next()) {
entity=new DynamicEntity();
for(int i=1;i<ccount+1;i++){
key=rem.getColumnName(i);
value=rs.getString(key);
entity.setValue(key, value);
}
obj=this.fillEntity(entity);
}
return obj;
} catch (SQLException e) {
log.error("访问数据库失败", e);
e.printStackTrace();
} finally {
this.closeAll();
}
return obj;
}
// 通过SQL语句查询返回一个字符串
//TODO: findForString的代码
protected String findForString(String sql){
try {
con =ConFactory.getFactory().getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
return rs.getString(1);
}
} catch (SQLException e) {
log.error("访问数据库失败", e);
e.printStackTrace();
} finally {
this.closeAll();
}
return null;
}
//通过SQL语句查询返回一个数字,如记录的行数
protected Long findForLong(String sql){
try {
con =ConFactory.getFactory().getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
return rs.getLong(1);
}
} catch (SQLException e) {
log.error("访问数据库失败", e);
e.printStackTrace();
} finally {
this.closeAll();
}
return null;
}
//实现类可覆盖此方法更换集合,默认是ArrayList,比如可以改成LinkList或者TreeList
protected List<Object> getNewList(){
return new ArrayList<Object>();
}
//实现类必须实现此方法完成数据的传递工作
protected abstract Object fillEntity(final DynamicEntity entity);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
StrutsCRUD.rar (62个子文件)
StrutsCRUD
.project 1KB
.mymetadata 303B
db
news.sql 10KB
WebRoot
WEB-INF
.struts-config.mex 2KB
web.xml 2KB
struts-config.xml 1KB
tld
struts-tiles.tld 8KB
struts-bean.tld 9KB
struts-nested.tld 70KB
struts-html.tld 72KB
struts-logic.tld 14KB
c.tld 16KB
fn.tld 7KB
lib
commons-logging.jar 37KB
commons-digester.jar 164KB
commons-fileupload.jar 22KB
commons-beanutils.jar 184KB
jstl.jar 20KB
log4j-1.2.14.jar 359KB
antlr.jar 350KB
struts.jar 531KB
commons-validator.jar 82KB
classes12.jar 1.14MB
jakarta-oro.jar 64KB
standard.jar 384KB
classes
log4j.properties 207B
appconfig.properties 414B
com
strutscrud
view
strutsform
UsersForm.class 2KB
model
bean
Users.class 1KB
dao
impl
UsersDAOImpl.class 3KB
UsersDAO.class 564B
data
DynamicEntity.class 1KB
ConFactory.class 2KB
AbstractDAO.class 5KB
service
UsersService.class 488B
impl
UsersServiceImpl.class 3KB
controller
UsersAction.class 4KB
ApplicationResources.properties 98B
util
ModelFactory.class 2KB
index.jsp 2KB
imags
liaotai01.jpg 191KB
129178.swf 270KB
META-INF
MANIFEST.MF 39B
users
create.jsp 2KB
list.jsp 3KB
update.jsp 2KB
.myeclipse
src
log4j.properties 207B
appconfig.properties 414B
com
strutscrud
view
strutsform
UsersForm.java 2KB
model
bean
Users.java 661B
dao
UsersDAO.java 389B
impl
UsersDAOImpl.java 2KB
data
DynamicEntity.java 470B
ConFactory.java 1KB
AbstractDAO.java 5KB
service
impl
UsersServiceImpl.java 2KB
UsersService.java 448B
controller
UsersAction.java 4KB
ApplicationResources.properties 98B
util
ModelFactory.java 967B
.mystrutsdata 265B
.classpath 1KB
共 62 条
- 1
百炼钢丶
- 粉丝: 227
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0