`
逆风的香1314
  • 浏览: 1431367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2EE开发中减少编写代码工作量的几种方法

阅读更多

减少编写代码工作量的几种方法:

参考项目Struts2,Appfuse,Springside,Easyjf

1 使用模板生成代码
  自定义模板变量和替换逻辑,velocity,freemaker,eclipse jet
  基于annatation的xdoclet,java ee5
  基于UML,XMI的MDA

2 使用反射机制

  a) 完成对象-对象,对象到集合的复制
     直接用commons-beanutils
 
  b) 完成Recordset到domain object的转换
     下面是一种方法:

    /////////////////////////////////////////////////////////////////////////////
    //Function: 完成ResultSet对象向ArrayList对象为集合的对象的转化
    //Para:sql,指定的查询Sql
   //Para:className,Sql相对应得JavaBean/FormBean类的名字
   //Return:以类className为一条记录的结果集,完成ResultSet对象向ArrayList对象为集//合的className对象的转化
  //////////////////////////////////////////////////////////////////////////////
  public ArrayList Select(String sql,String className){
    ArrayList paraList=new ArrayList();
    try{
      if (conn == null){
        Connection();
      }
      PreparedStatement stmt = conn.prepareStatement(sql);
      ResultSet rs = stmt.executeQuery();
      String recordValue="";
      Object c1=null;
      paraList=new ArrayList();
      ResultSetMetaData rsmd = rs.getMetaData();
      int columnCount = rsmd.getColumnCount();
      while (rs.next()){
          c1=Class.forName(className).newInstance();
          for (int i=1; i<=columnCount; i++) {
            if(rs.getString(rsmd.getColumnName(i))!=null){
              recordValue=rs.getString(rsmd.getColumnName(i));
            }else{
              recordValue="";
            }
            Method m=c1.getClass().getMethod(getSetMethodName(rsmd.getColumnName(i)),new Class[]{recordValue.getClass()});
            m.invoke (c1, new Object[]{recordValue});
          }
          paraList.add(c1);
      }
    }catch(SQLException ex){
     
    }catch(ClassNotFoundException e){
    }catch(NoSuchMethodException e) {
    }catch(InvocationTargetException e){
    }catch (IllegalAccessException e){
    }catch(InstantiationException e){
    } finaly{
        closeConnection();
    return paraList;
    }
      }

    在JavaBean封装的商业逻辑中调用Select 方法,然后在JSP页面上显示出来:

   //Function:取得用户列表
  //Para:
  //Return:返回用户列表
  /////////////////////////////////////////////////////////////////////////////
  public ArrayList getUsers(){
      ArrayList ret=null;
      DatabaseManage db=new DatabaseManage();
      String sql=" select usr_id,usr_name "
          +" from users " ;
      ret=db.Select(sql," com.bhsky. webis.system.UsersActionForm");
      return ret;
  }

  还有一种方法:比如在EasyJf-DBO里面将Recordset放到HashMap里面,然后使用beanutils复制到对象里面,相当于比上面的方法多了一个环节。

  c) 在基类(抽象类)里面使用,主要用在对对象的保存,更新,删除上
     在DAO中实现CRUD的操作
        public void insert(Object o) {
  getSqlMapClientTemplate().insert(o.getClass().getName() + POSTFIX_INSERT, o);
 }
     在Struts Action中实现domain object到formbean的转换,还可以实现其它的全局操作,例如日志
 

3 使用范型的方法,主要用在查询方法中
  在基类(抽象类)中使用,主要用在查询的方法上
   public <T> List<T> getAll(Class<T> entityClass) {
  return getSqlMapClientTemplate().queryForList(entityClass.getName() + POSTFIX_SELECT, null);
 }

  对比一下反射的用法:
    public List getObjects(Class clazz) {
        return getSqlMapClientTemplate().queryForList(getSelectQuery(ClassUtils.getShortName(clazz)), null);
    }
 

分享到:
评论

相关推荐

    j2ee代码生成器源代码

    J2EE代码生成器是一种强大的开发工具,它能够自动生成符合J2EE规范的源代码,极大地提高了开发效率,减少了手动编写重复代码的工作量。通过理解和掌握这种工具的源代码,开发者可以更好地定制化自己的代码生成规则,...

    基于Hibernate和Struts的J2EE应用开发 PDF

    为了解决这些问题,提高开发效率并减少代码间的耦合度,本篇文章提出了一种新的开发策略:基于Struts框架和Hibernate框架的J2EE应用开发方法。 #### 二、数据持久层及Hibernate框架 **Hibernate**是一个开源的数据...

    J2EE企业应用测试源代码.

    应用软件自动化测试是现代开发流程中的重要组成部分,通过编写脚本和使用自动化工具,可以减少手动测试的工作量,提高效率,同时降低因人为错误导致的问题。 总结来说,"J2EE企业应用测试源代码"这个主题深入探讨了...

    软件测试技术在J2EE项目中的应用

    软件测试技术在J2EE项目中的应用至关重要,因为J2EE平台是企业级应用开发的基石,尤其在大型电子商务等领域,软件质量的高低直接影响到企业的运营和用户体验。J2EE基于Java2平台,提供了一种简化企业解决方案开发、...

    j2ee整合开发大全

    通过学习《J2EE整合开发大全》,开发者不仅可以掌握Java企业级开发的基本技能,还能了解如何在实际项目中灵活运用这些技术,提高开发效率和代码质量。虽然现代Java开发趋势已经转向Spring Boot和微服务架构,但SSH的...

    Eclipse开发平台在J2EE中的应用.pdf

    ### Eclipse开发平台在J2EE中的应用 #### Eclipse平台概述 Eclipse是一个备受推崇的集成开发环境(IDE),被广泛应用于软件开发领域。它不仅是一个成熟的、精心设计且可扩展的开发平台,还是一个开放源代码项目。...

    基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台.zip

    这减少了手动编写常见或重复代码的工作量,使开发者能更高效地进行开发。代码生成器通常包括数据库模式到对象映射(ORM)、API客户端生成、业务逻辑层代码生成等功能。 2. **J2EE架构**:J2EE提供了多种服务和组件...

    J2EE开发常用的Jar包

    本资源包含了几个J2EE开发中常用的库,分别是Struts2、Servlet、Ibatis和Json相关的jar包。这些组件对于开发高效、灵活的Web应用至关重要。 1. **Struts2**:Struts2是一个基于MVC设计模式的开源Java Web框架,它...

    图书管理系统 基于J2EE

    7. **部署与容器**:完成开发后,系统需要在应用服务器(如Tomcat、Glassfish)中部署,这些服务器为J2EE应用提供运行环境,并处理如线程管理、生命周期管理等工作。 通过这个“图书管理系统JAVA计算版”项目,初学...

    使用J2EE编写企业应用教程

    通过"使用J2EE编写企业应用教程",读者可以期待学习到如何设计和实现一个完整的J2EE应用,从架构设计到具体的技术实施,包括案例分析和实践指导。"E书说明.txt"可能是关于如何阅读和使用这个教程的指南,而"阅读器...

    J2EE.rar_J2EE

    J2EE的核心理念是组件化,通过预定义的接口和协议,使得不同的组件可以协同工作,减少代码重复,提高开发效率。 **J2EE架构** J2EE架构主要由以下几层组成: 1. **客户端层(Client Layer)**:这是用户与应用...

    基于MVC的J2EE的三层结构开发技术研究与实现

    - **促进代码重用**:模型层的JavaBean可以在不同的项目中重用,减少了重复编码的工作量。 #### 实例分析 文章中提到使用一个具体的开发实例来说明如何利用JSP + Servlet + JavaBean的编程模式实现MVC架构。虽然...

    J2EE轻量级架构研究与应用

    - **减少代码量**:这些框架提供了大量的模板和预定义的方法,开发者无需从头开始编写代码。 - **提高开发效率**:由于框架的自动化功能,开发人员可以更专注于业务逻辑而非基础设施的实现细节。 - **降低维护成本**...

    J2EE.zip_jsp+j2ee

    2. **组件化**:J2EE组件模型允许开发者复用代码,减少重复工作,提高开发效率。 3. **高可用性和可伸缩性**:支持负载均衡和集群部署,能应对大规模并发访问。 4. **安全性**:J2EE提供了多种安全机制,如认证、...

    J2EEWEB开发教材

    - **J2EE (Java 2 Platform, Enterprise Edition)** 是一种利用 Java 作为服务器端应用的框架,主要用来开发企业级应用。 - J2EE 的主要优势在于它的平台无关性和可移植性,能够支持多种操作系统环境。 **1.2 J2EE ...

    1j2ee环境搭建之开发工具.rar

    在IT行业中,Java EE(Enterprise Edition)是一种广泛用于构建企业级Web应用的开发框架。它提供了丰富的组件和服务,包括数据库连接、事务管理、安全性和分布式应用程序支持。本篇将详细探讨"1j2ee环境搭建之开发...

Global site tag (gtag.js) - Google Analytics