JiveJdon Community Forums
在线101人 J道首页 | 论坛首页 | 培训咨询 | 开源框架 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 2 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
jxvae

发表文章: 1
注册时间: 2007年08月28日 17:50
请求大侠优化一段代码 发表: 2007年08月28日 17:52 回复




















for (int i = 0; i<temp; i++) {
if(values[i] instanceof String){
ps.setString(i+1,values[i].toString());
}else if(values[i] instanceof Integer){
ps.setInt(i+1,new Integer(values[i].toString()));
}else if(values[i] instanceof Short){
ps.setShort(i+1,new Short(values[i].toString()));
}else if(values[i] instanceof Long){
ps.setLong(i+1,new Long(values[i].toString()));
}else if(values[i] instanceof Date){
ps.setDate(i+1,Date.valueOf(values[i].toString()));
}else if(values[i] instanceof Double){
ps.setDouble(i+1,new Double(values[i].toString()));
}else if(values[i] instanceof Timestamp){
ps.setTimestamp(i+1,Timestamp.valueOf(values[i].toString()));
}else if(values[i] instanceof Time){
ps.setTime(i+1,Time.valueOf(values[i].toString()));
}else if(values[i] instanceof BigDecimal){
ps.setBigDecimal(i+1,new BigDecimal(values[i].toString()));
}else if(values[i] instanceof Blob){
ps.setBlob(i+1,(Blob)values[i]);
}else if(values[i] instanceof Clob){
ps.setClob(i+1,(Clob)values[i]);
}
}


这代码里的if else使用太多了,总觉得效率不高,有哪位大侠帮俺给优化一下啊
[该贴被jxvae于2007年08月28日 17:54修改过]
[该贴被jxvae于2007年08月28日 17:54修改过]
[该贴被jxvae于2007年08月28日 17:54修改过]
banq

发表文章: 8929
注册时间: 2002年08月03日 17:08
回复:请求大侠优化一段代码 发表: 2007年08月30日 10:34 回复
需要详细的业务场景,要重新设计整个实现思路。
否则只是代码,不会变魔术。
jxva

发表文章: 3
注册时间: 2006年11月06日 13:26
re:请求大侠优化一段代码 发表: 2007年09月22日 11:02 回复
是一个DAO的插入记录方法
具体的代码如下:


public void insert(Object obj) {
StringBuffer sql=new StringBuffer();
StringBuffer name_array=new StringBuffer();
StringBuffer value_array=new StringBuffer();
try {
Class<? extends Object> voClass = obj.getClass();
sql.append("insert into "+TableUtil.getTbname(voClass.getSimpleName()).toLowerCase()+" (");
Field[] fs = voClass.getDeclaredFields();
Object[] values=new Object[fs.length];
int temp=0;
for (int i = 0; i < fs.length; i++) {
String name = fs.getName();
String type = fs.getType().getName();

Method methInstance = voClass.getMethod("get"+name.substring(0, 1).toUpperCase()+ name.substring(1,name.length()),new Class[] {});
Object value=methInstance.invoke(obj,new Object[]{});

if(value==null||(value.equals("")&&!type.equals("java.lang.String"))){
continue;
}else{
name_array.append(name.toLowerCase()+",");
value_array.append("?,");
values[temp]=value;
temp++;
}
}
sql.append(name_array.substring(0,name_array.length()-1)+") values ("+value_array.substring(0,value_array.length()-1)+")");
PreparedStatement ps =conn.prepareStatement(sql.toString());

for (int i = 0; i<temp; i++) {

if(values instanceof String){
ps.setString(i+1,values.toString());
}else if(values instanceof Integer){
ps.setInt(i+1,Integer.valueOf(values.toString()));
}else if(values instanceof Short){
ps.setShort(i+1,new Short(values.toString()));
}else if(values instanceof Long){
ps.setLong(i+1,Long.valueOf(values.toString()));
}else if(values instanceof Date){
ps.setDate(i+1,Date.valueOf(values.toString()));
}else if(values instanceof Double){
ps.setDouble(i+1,new Double(values.toString()));
}else if(values instanceof Timestamp){
ps.setTimestamp(i+1,Timestamp.valueOf(values.toString()));
}else if(values instanceof Time){
ps.setTime(i+1,Time.valueOf(values.toString()));
}else if(values instanceof BigDecimal){
ps.setBigDecimal(i+1,new BigDecimal(values.toString()));
}else if(values instanceof Blob){
ps.setBlob(i+1,(Blob)values);
}else if(values instanceof Clob){
ps.setClob(i+1,(Clob)values);
}
}
ps.executeUpdate();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(sql);
}
这个主题有 2 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-07 jdon.com

anti spam