J2EE开发中减少编写代码工作量的几种方法
来源:互联网 发布:炫踪网络ipo 编辑:程序博客网 时间:2024/05/22 12:15
减少编写代码工作量的几种方法:
参考项目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
return getSqlMapClientTemplate().queryForList(entityClass.getName() + POSTFIX_SELECT, null);
}
对比一下反射的用法:
public List getObjects(Class clazz) {
return getSqlMapClientTemplate().queryForList(getSelectQuery(ClassUtils.getShortName(clazz)), null);
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1504215
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- J2EE开发中减少编写代码工作量的几种方法
- 几种测试工作量的估算方法
- 几种测试工作量的估算方法
- 写给即将步入大学,主修计算机专业的青年们的一封信
- Dojo Spreadsheet Widget - 基于Ajax的Excel
- eXo Platform开始从门户转向Web OS
- JSSoundKit: 超简单的网页播放器API
- 恶补使用CVS进行配置管理
- J2EE开发中减少编写代码工作量的几种方法
- C/C++代码检视要点
- Grails + EJB Domain Models
- 将Bonita工作流引擎和eXo Portal相结合
- 国际象棋“皇后”问题的回溯算法
- 用YUI Ajax 库改造的 phpBB
- 恶补J2EE Web 开发(讲稿大纲)
- 用YUI Ajax 库改造的 phpBB
- Visual WebGui 基于ajax的界面框架