`

策略设计模式_构建公共通用的Dao

阅读更多

核心代码:

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 CommDao {

    private ResultSet rs;

    private PreparedStatement pre;

    private Connection conn;

    private SQLDBConnutil connutil=SQLDBConnutil.getSQLDBConnutil();

   

    protected int update(String sql,Object[] obj){

       int n=0;

       conn=connutil.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{

           connutil.free(null, pre, conn);

       }

       return n;

    }

   

    protected Object getone(String sql,Object[] obj,MappingRow mp){

       Object myobj=null;

       conn=connutil.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=mp.MapRow(rs);

           }

       } catch (Exception e) {

           e.printStackTrace();

           throw new RuntimeException(e.getMessage());

       }

       return myobj;

    }

   

    protected List getall(String sql,Object[] obj,MappingRow mp){

       List list=new ArrayList();

       Object myobj=null;

       conn=connutil.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(mp.MapRow(rs));

           }

       } catch (Exception e) {

           e.printStackTrace();

           throw new RuntimeException(e.getMessage());

       }

       return list;

    }

}

//其中MappingRow接口如下:

public interface MappingRow {

    public Object MapRow(ResultSet rs);

}

具体对象的Dao实现如下:

public class StuDaoImple extends CommDao 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, new MappingRow(){

   public Object MapRow(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;
   }
   
  });
 }

 public Stu getOneStu(int sid) {
  String sql="select * from stu where s_id=?";
  Object[] obj=new Object[]{sid};
  return (Stu) super.getone(sql, obj,new MappingRow(){

   public Object MapRow(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;
   }
   
  });
 }

 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);
 }
 

 

 

 

2
1
分享到:
评论
1 楼 shiren1118 2009-04-23  
使用模板模式怎么样?

相关推荐

    模板设计模式_构建公共通用的Dao

    在"模板设计模式_构建公共通用的Dao"的例子中,`MyJDBC2`可能是实现了通用Dao功能的具体类。这个类可能会包含以下关键部分: - **数据库连接管理**:通过连接池获取和释放数据库连接,这部分代码可以封装在一个模板...

    Hibernate_通用DAO模式,一个写好的dao层

    在Java Web开发中,DAO(Data Access Object)模式是一种常用的设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层分离,提高代码的可重用性和可维护性。本资源“Hibernate_通用DAO模式”提供了一种适用...

    Chapter08DAO模式_javadao_

    DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于数据库操作的抽象和封装。在Java中,DAO模式的应用十分广泛,它为业务逻辑层提供了与数据库交互的接口,降低了系统的耦合度,提高了代码的可...

    java ssh通用DAO另类实现示例

    本示例将探讨一个通用DAO的另类实现方法,旨在提高代码复用性和简化开发过程。 首先,理解SSH框架中的DAO设计模式至关重要。DAO是一种设计模式,它为应用程序提供了一种抽象的接口,以便与数据库进行交互,同时避免...

    DAO设计模式

    DAO(Data Access Object)设计模式是一种软件设计模式,主要用于数据库操作的封装,它将业务逻辑与数据访问逻辑分离开来,使得...同时,配合其他设计模式,如工厂模式、策略模式等,可以构建出更加健壮的系统架构。

    C#特性标签实现通用Dao层

    有了这些实体类,我们可以进一步构建通用Dao层。这里的关键是动态生成SQL语句和执行数据库操作。C#的`Expression` API可以帮助我们根据属性生成相应的CRUD(创建、读取、更新、删除)操作。例如,生成一个获取所有...

    hibernate4 通用dao,service

    由于没有具体的文件列表,我们无法详细讨论每个文件的内容,但根据标题和描述,我们可以推断这是一个关于使用Hibernate4创建通用DAO和Service的教程或资源,旨在帮助Java开发者理解和应用这种模式来提高开发效率。...

    JDBCTemplate+JavaPOJO实现通用DAO

    在这个"JDBCTemplate+JavaPOJO实现通用DAO"的项目中,我们将探讨如何利用这两者构建一个通用的DAO层。 首先,Java POJO(Plain Old Java Object)是指那些没有特殊约束的简单Java对象,通常用于表示数据库中的实体...

    留言管理程序_使用Struts + DAO + Hibernate完成笔记

    数据访问对象(DAO)模式是一种设计模式,旨在将业务逻辑与数据访问代码分离。在本项目中,DAO类负责与数据库进行交互,包括添加、查询、更新和删除留言记录。通过使用DAO,我们可以在不修改业务逻辑的情况下更换...

    通用DAO

    在提供的"通用DAO源码及示例"中,我们可以看到具体的实现细节,如如何初始化数据库连接,如何构建和执行SQL,以及如何处理结果集。这些示例可以帮助我们更好地理解和应用通用DAO。 总结来说,通用DAO是Java开发中...

    ssm(Spring-springMVC-Mybatis)通用Dao框架

    它采用模型-视图-控制器(Model-View-Controller,MVC)设计模式,将业务逻辑、数据展示和用户交互分离,提高了代码的可维护性和可测试性。SpringMVC通过DispatcherServlet接收HTTP请求,然后根据请求映射找到对应的...

    SSH中通用dao类

    3. **设计模式的应用**:通用DAO类通常采用工厂模式和模板方法模式。工厂模式用于创建DAO实例,如`DAOFactory`,可以根据配置动态创建不同类型的DAO。模板方法模式则定义了数据库操作的基本步骤,子类可以通过重写...

    DAO模式设计

    DAO(Data Access Object)模式是软件开发中常用的设计模式,主要目的是为了将数据访问层与业务逻辑层解耦,提供一个抽象层来处理数据库操作。DAO模式的核心思想是通过创建一个独立于具体数据库操作的对象(即DAO)...

    JAVA DAO模式浅析.pdf

    DAO(数据访问对象)模式是Java项目开发中常见的设计模式,主要用于处理数据库交互,实现业务...在实际项目开发中,结合使用DAO模式和其他设计模式(如工厂模式、策略模式等),可以构建出更加健壮和灵活的系统架构。

    PHP_DAO_MYSQL php写的dao看起来还好

    在IT行业中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的操作,以减少业务逻辑与数据访问之间的耦合。PHP DAO(Data Access Object)与MySQL结合,可以构建高效、可维护的Web应用。这个...

    两个通用DAO

    标题中的“两个通用DAO”指的是在软件开发中,特别是Java后端开发中常见的两种数据库访问对象(DAO)设计模式。DAO是一种设计模式,用于封装对数据库的操作,将数据访问层与业务逻辑层分离,提高代码的可重用性和可...

    J2ee设计模式.pdf

    设计模式是解决特定设计问题的通用模板,可以帮助开发者构建出结构清晰、易于维护的软件系统。 J2EE设计模式的种类包括创建型、结构型和行为型等,它们各自针对不同的设计问题。例如,创建型模式涉及对象的创建过程...

    一个DAO通用模型

    DAO(Data Access Object)模式是软件工程中常用的设计模式,主要目的是为了将业务逻辑与数据访问操作进行解耦,提高代码的可维护性和可扩展性。在这个“一个DAO通用模型”中,我们可以深入探讨DAO模式的基本概念、...

    Spring3 JDBC 通用DAO封装2 dao层终于完成dao层大概上传完整代码

    通过上述步骤,我们可以构建一个高效、可复用的Spring3 JDBC通用DAO层。在实际项目中,可以结合Spring的其他功能,如MyBatis、Hibernate等ORM框架,或者Spring Data JPA,进一步优化数据访问层的设计。同时,别忘了...

Global site tag (gtag.js) - Google Analytics