注意Java陷阱
2015-09-11 15:38
330 查看
一 deleteCharAt
StringBuilder方法deleteCharAt:在这个序列中的删除指定位置字符,只是一个字符.如下代码,在拼接SQL过程中,删除最后一个”?”或者”,”都是可以的,但是删除最后一个”and”时,只是删除了最后一个”and”的一个字符,即”a” 的位置. 结果变成: select * form tableName where 1=1 nd
可以使用 setLength 替代:stringBuilder.setLength(stringBuilder.length()-“and “.length());
二 使用spring注入对象,当出现null对象时,考虑定义上层对象时是否采用spring方式注入.
如下 代码片段:
代码片段2 ConstructPayParams
如果代码片段1中采用方式二,正常创建ConstructPayParams对象时,则ConstructPayParams类中的payBasicProfile无法被注入,为null,必须采用方式一spring注入方式创建ConstructPayParams对象
三 格式化保留两位小数
StringBuilder方法deleteCharAt:在这个序列中的删除指定位置字符,只是一个字符.如下代码,在拼接SQL过程中,删除最后一个”?”或者”,”都是可以的,但是删除最后一个”and”时,只是删除了最后一个”and”的一个字符,即”a” 的位置. 结果变成: select * form tableName where 1=1 nd
可以使用 setLength 替代:stringBuilder.setLength(stringBuilder.length()-“and “.length());
public static String buildSelectSql(final String tableName,final String[] columns ,final String orderByCondition,final String[] wheres) { if (CheckValue.valideteNullOrEmpty(tableName)) { return ""; } StringBuilder stringBuilder=new StringBuilder(" select "); if (columns==null||columns.length==0) { stringBuilder.append(" *"); } else { for(String column : columns) stringBuilder.append(column+","); stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(",")); } stringBuilder.append(" from "+tableName); if (wheres!=null&&wheres.length>0) { stringBuilder.append(" where "); for (String where : wheres) stringBuilder.append(where+"=? and "); stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("and")); } if (orderByCondition!=null&&!orderByCondition.isEmpty()) { stringBuilder.append(" order by "+orderByCondition); } return stringBuilder.toString(); }
二 使用spring注入对象,当出现null对象时,考虑定义上层对象时是否采用spring方式注入.
如下 代码片段:
public class PayService19 implements IPayService { //方式一 spring注入 @Resource(name="constructPayParams") private ConstructPayParams constructPayParam; //方式二 正常创建 private ConstructPayParams constructPayParam=new ConstructPayParams() //省略其他方法 }
代码片段2 ConstructPayParams
@Component public class ConstructPayParams { @Resource(name = "pay19BasicProfile") private Pay19BasicProfile payBasicProfile; //省略其他方法 }
如果代码片段1中采用方式二,正常创建ConstructPayParams对象时,则ConstructPayParams类中的payBasicProfile无法被注入,为null,必须采用方式一spring注入方式创建ConstructPayParams对象
三 格式化保留两位小数
//如果为整型,则异常 String.format("%.2f", orderProfile.getAmount()/100.0)
相关文章推荐
- java内存泄露
- java笔记——初识面向对象05接口
- java多线程之ThreadLocal
- 借做项目的机会开始分享javaee的一些相关知识
- java基础第5天
- JDK源码 -- Map篇
- Spring详细教程
- java操作excel表格(2003)
- Java开源建站工具
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- Ubuntu下Eclipse搭建Hadoop开发环境
- java 生成 csv文件
- Struts 2中的constant详解
- ActiveMQ与Spring集成(四)
- java使用JDBC连接mysql并且进行批量增删改操作
- Java写文件的方式:FileOutputStream vs. FileWriter
- java之一篇:java的执行顺序表象
- spring单文件上传
- Quartz Spring与Spring Task总结
- Java的IO流