- 浏览: 786471 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (573)
- Java基础 (76)
- C++基础 (5)
- hibernate (5)
- struts (4)
- spring (1)
- webservice (7)
- AjaX基础 (0)
- JS脚本 (53)
- 正则表达式 (5)
- html脚本 (30)
- 数据库基础 (54)
- 工作相关 (49)
- 其他 (30)
- Linux (9)
- web服务器 (17)
- JSP (13)
- eclipse (6)
- 面试题相关 (20)
- XML (3)
- Apache common (2)
- 生活 (35)
- VMware (1)
- log4j (9)
- BeanUtils (2)
- 设计模式 (3)
- UML (1)
- UNIX (1)
- ibats (5)
- GT-Grid (17)
- ABAP学习 (17)
- ABAP (35)
- ABAP--ALV (11)
- ABAP--WEBDIMPRO (0)
- abap-sample (1)
- BEMS (2)
- flex (33)
- GIS技术 (3)
最新评论
核心代码:
Connection的工具类:详见:JDBC数据库连接
StuDao的接口:
public interface StuDaointer {
public void addStu(Stu stu);
public void delStu(int sid);
public void updStu(Stu stu);
public Stu getOneStu(int sid);
public List getAllStu();
}
公共的DAO///*************************************\\\
public abstract class CommonDao {
private Connection conn;
private PreparedStatement pre;
private SQLDBConnutil myconn=SQLDBConnutil.getSQLDBConnutil();
private ResultSet rs;
//所有的添,删,改的方法
protected int update(String sql,Object[] obj){
int n=0;
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
n=pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally{
myconn.free(null, pre, conn);
}
return n;
}
protected abstract Object MappingRow(ResultSet rs);
protected Object getone(String sql,Object[] obj){
Object myobj=null;
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
rs=pre.executeQuery();
if(rs.next()){
myobj=this.MappingRow(rs);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
myconn.free(rs, pre, conn);
}
return myobj;
}
protected List getall(String sql,Object[] obj){
List list=new ArrayList();
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
rs=pre.executeQuery();
while(rs.next()){
list.add(this.MappingRow(rs));
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
myconn.free(rs, pre, conn);
}
return list;
}
}
具体对象的Dao实现如下:
public class StuDaoImple extends CommonDao implements StuDaointer {
public void addStu(Stu stu) {
String sql="insert into stu values(?,?,?)";
Object[] obj=new Object[]{stu.getSname(),stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime())};
super.update(sql, obj);
}
public void delStu(int sid) {
String sql="delete stu where s_id=?";
Object[] obj=new Object[]{sid};
super.update(sql, obj);
}
public List getAllStu() {
String sql="select * from stu";
return super.getall(sql, null);
}
public Stu getOneStu(int sid) {
String sql="select * from stu where s_id=?";
Object[] obj=new Object[]{sid};
return (Stu) super.getone(sql, obj);
}
public void updStu(Stu stu) {
String sql="update stu set s_name=?,s_sex=?,s_brith=? where s_id=?";
Object[] obj=new Object[]{stu.getSname(),stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()),stu.getSid()};
super.update(sql, obj);
}
@Override
protected Object MappingRow(ResultSet rs) {
Stu stu=new Stu();
try {
stu.setSid(rs.getInt("s_id"));
stu.setSname(rs.getString("s_name"));
stu.setSsex(rs.getString("s_sex"));
stu.setSbrith(rs.getDate("s_brith"));
} catch (SQLException e) {
e.printStackTrace();
}
return stu;
}
}
Connection的工具类:详见:JDBC数据库连接
StuDao的接口:
public interface StuDaointer {
public void addStu(Stu stu);
public void delStu(int sid);
public void updStu(Stu stu);
public Stu getOneStu(int sid);
public List getAllStu();
}
公共的DAO///*************************************\\\
public abstract class CommonDao {
private Connection conn;
private PreparedStatement pre;
private SQLDBConnutil myconn=SQLDBConnutil.getSQLDBConnutil();
private ResultSet rs;
//所有的添,删,改的方法
protected int update(String sql,Object[] obj){
int n=0;
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
n=pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally{
myconn.free(null, pre, conn);
}
return n;
}
protected abstract Object MappingRow(ResultSet rs);
protected Object getone(String sql,Object[] obj){
Object myobj=null;
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
rs=pre.executeQuery();
if(rs.next()){
myobj=this.MappingRow(rs);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
myconn.free(rs, pre, conn);
}
return myobj;
}
protected List getall(String sql,Object[] obj){
List list=new ArrayList();
conn=myconn.getConnection();
try {
pre=conn.prepareStatement(sql);
if(obj!=null && obj.length>0){
for(int i=0;i<obj.length;i++){
pre.setObject(i+1, obj[i]);
}
}
rs=pre.executeQuery();
while(rs.next()){
list.add(this.MappingRow(rs));
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
myconn.free(rs, pre, conn);
}
return list;
}
}
具体对象的Dao实现如下:
public class StuDaoImple extends CommonDao implements StuDaointer {
public void addStu(Stu stu) {
String sql="insert into stu values(?,?,?)";
Object[] obj=new Object[]{stu.getSname(),stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime())};
super.update(sql, obj);
}
public void delStu(int sid) {
String sql="delete stu where s_id=?";
Object[] obj=new Object[]{sid};
super.update(sql, obj);
}
public List getAllStu() {
String sql="select * from stu";
return super.getall(sql, null);
}
public Stu getOneStu(int sid) {
String sql="select * from stu where s_id=?";
Object[] obj=new Object[]{sid};
return (Stu) super.getone(sql, obj);
}
public void updStu(Stu stu) {
String sql="update stu set s_name=?,s_sex=?,s_brith=? where s_id=?";
Object[] obj=new Object[]{stu.getSname(),stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()),stu.getSid()};
super.update(sql, obj);
}
@Override
protected Object MappingRow(ResultSet rs) {
Stu stu=new Stu();
try {
stu.setSid(rs.getInt("s_id"));
stu.setSname(rs.getString("s_name"));
stu.setSsex(rs.getString("s_sex"));
stu.setSbrith(rs.getDate("s_brith"));
} catch (SQLException e) {
e.printStackTrace();
}
return stu;
}
}
- 模板设计模式构建公共通用的Dao实例.rar (903.7 KB)
- 下载次数: 1
发表评论
-
oracle获取指定的日期、时间
2012-07-17 14:32 1074--本周 select trunc(sysdate, 'd ... -
Oracle 常用日期提取脚本汇总
2012-07-17 14:30 814Oracle 常用日期提取脚本汇总 1、本周第一天和最后一 ... -
Windows下安装PostgreSQL8.2图解
2010-08-20 13:16 1179Windows下安装PostgreSQL8.2图解 -
关于用户角色权限管理一点想法
2010-06-09 10:46 1090关键字: 权限 --------------------- ... -
sql语句解析顺序
2010-05-20 14:47 1355标准的 SQL 的解析顺序 ... -
postgreSql 利用触发器创建动态表
2010-05-20 14:43 1729在postgresql 中如果在程序运行中需要根据插入数据条件 ... -
使用反射实现ORM
2010-01-14 22:09 935首先Bean在符合JavaBean的要求,即有一个无参的构造方 ... -
使用构造函数创建JavaScript对象
2010-01-14 21:31 947<!DOCTYPE html PUBLIC " ... -
数据库行转列
2010-01-14 21:09 810create table score ( s_id int ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2010-01-14 20:56 909Insert是T-sql中常用语句,Insert INTO t ... -
mysql导入导出
2010-01-12 12:05 14641. 导出 view plaincopy to clip ... -
mysql导入与导出和删除多条数据数据
2010-01-12 11:57 2256数据导出: mysql> select * from ... -
MySQL索引分类和各自用途
2010-01-12 11:43 1488一、 MySQL: 索引以B树格 ... -
各种主流数据库的分页写法
2010-01-11 16:38 639------------------------------- ... -
MySQL中进行树状所有子节点的查询
2010-01-06 21:16 1228在Oracle 中我们知道有一个 Hierarchical Q ... -
MySQL中进行树状所有子节点的查询
2009-12-29 14:52 1002在Oracle 中我们知道有一个 Hierarchical Q ... -
超详细的SQL语句语法
2009-12-28 18:08 1018简单的Transact-SQL查询只包括选择列表、FROM子句 ... -
有关SQL模糊查询
2009-12-28 12:50 1197执行 数据库查询时,有 ... -
视图,存储过程,触发器的好处
2009-12-23 11:33 1065视图的优点: 提高数据安全性,可以不让用户看到表中的某个字 ... -
处理上百万条的数据库如何提高处理查询效率
2009-12-18 12:42 15751.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ...
相关推荐
本示例将探讨一个通用DAO的另类实现方法,旨在提高代码复用性和简化开发过程。 首先,理解SSH框架中的DAO设计模式至关重要。DAO是一种设计模式,它为应用程序提供了一种抽象的接口,以便与数据库进行交互,同时避免...
由于没有具体的文件列表,我们无法详细讨论每个文件的内容,但根据标题和描述,我们可以推断这是一个关于使用Hibernate4创建通用DAO和Service的教程或资源,旨在帮助Java开发者理解和应用这种模式来提高开发效率。...
有了这些实体类,我们可以进一步构建通用Dao层。这里的关键是动态生成SQL语句和执行数据库操作。C#的`Expression` API可以帮助我们根据属性生成相应的CRUD(创建、读取、更新、删除)操作。例如,生成一个获取所有...
为了简化JDBC的使用,Spring框架提供了JDBCTemplate,它是一个基于模板方法设计模式的数据库访问类,能够帮助我们更安全、更高效地执行SQL语句。在这个"JDBCTemplate+JavaPOJO实现通用DAO"的项目中,我们将探讨如何...
3. **设计模式的应用**:通用DAO类通常采用工厂模式和模板方法模式。工厂模式用于创建DAO实例,如`DAOFactory`,可以根据配置动态创建不同类型的DAO。模板方法模式则定义了数据库操作的基本步骤,子类可以通过重写...
标题中的“两个通用DAO”指的是在软件开发中,特别是Java后端开发中常见的两种数据库访问对象(DAO)设计模式。DAO是一种设计模式,用于封装对数据库的操作,将数据访问层与业务逻辑层分离,提高代码的可重用性和可...
- 它可能包含了一些预定义的DAO模板,方便快速构建数据库操作。 - 项目可能提供了对常见数据库(如MySQL、Oracle、PostgreSQL)的支持。 由于没有具体的内容,以上分析基于对DAO模式和数据库访问的一般理解。如果要...
这个框架组合提供了模型-视图-控制器(MVC)的设计模式,以及灵活的数据访问机制,极大地提高了开发效率。下面将详细介绍这个框架模板的相关知识点。 **Spring框架**:Spring作为基础,它是一个全面的后端应用程序...
设计模式是解决特定设计问题的通用模板,可以帮助开发者构建出结构清晰、易于维护的软件系统。 J2EE设计模式的种类包括创建型、结构型和行为型等,它们各自针对不同的设计问题。例如,创建型模式涉及对象的创建过程...
- **沟通工具**:设计模式作为一种通用的语言,帮助开发人员更有效地交流设计思想。 - **解决常见问题**:设计模式提供了一套解决软件开发中常见问题的有效方案。 #### 三、Gang of Four (GoF) 设计模式 - **单例...
设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...
Struts是一种基于MVC(Model-View-Controller)设计模式的框架,用于构建企业级的Web应用程序,而DAO(Data Access Object)模式则是为了解耦业务逻辑层和数据访问层,使得数据库操作更加独立,易于维护和扩展。...
设计模式通常分为三类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如适配器、装饰器、代理、桥接、组合、外观、享元)和行为型模式(如策略、模板方法、观察者、迭代器、责任链、命令、访问者、备忘录...
Dao(Data Access Object)接口是Java中用于数据库访问的标准设计模式,它定义了对数据库进行操作的方法。在Mybatis中,Dao接口的实现类通常是DaoImpl,这个实现类会包含具体的SQL执行逻辑。基础的DaoImpl意味着它...
设计模式是经过时间和实践验证的解决常见问题的最佳方案,它为开发者提供了在特定情况下进行设计的通用语言和模板。本篇文章将深入探讨“java-javaee-软件工程-设计模式”这一主题,并结合SSH2(Struts、Spring、...
使用这套模板,开发者可以快速构建符合规范的Java Web应用后端代码,大大提高了开发效率。通过调整Freemarker模板,可以适应不同的项目需求和编码风格,实现高度定制化的代码生成。在实际使用时,需结合代码生成器...
### 设计模式概述 设计模式是一种可重复使用的...以上所述的设计模式不仅限于 Java 语言,它们是面向对象编程领域中的通用解决方案。理解和掌握这些模式将极大地帮助开发者编写出更加灵活、可扩展和易于维护的代码。
总的来说,这个"SpringHibernate万能DAO组件"是一个为了简化Spring和Hibernate集成而设计的工具,通过反射和动态SQL构建,提高了开发效率,降低了SSH框架组合项目的复杂性。使用该组件,开发者可以更快速地实现数据...