注意Java陷阱

简介: 一 deleteCharAt StringBuilder方法deleteCharAt:在这个序列中的删除指定位置字符,只是一个字符.如下代码,在拼接SQL过程中,删除最后一个”?”或者”,”都是可以的,但是删除最后一个”and”时,只是删除了最后一个”and”的一个字符,即”a” 的位置. 结果变成: select * form tableName where 1

一 deleteCharAt
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
|
4月前
|
Java 开发者
Java中的异常处理机制探究
【8月更文挑战第20天】在Java编程中,异常处理是确保程序健壮性和稳定性的重要环节。本文将深入探讨Java的异常处理机制,包括异常的分类、如何捕获和处理它们,以及在实际开发中如何有效地利用这些机制来提高代码质量和维护性。我们将一起探索异常处理的最佳实践,并讨论如何在不牺牲性能的前提下,构建更加健壮的Java应用程序。
|
7月前
|
Java 编译器 程序员
【Java ——异常机制详解】
try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。 catch – 用于捕获异常。catch用来捕获try语句块中发生的异常。 finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。 throw – 用于抛出异常。
|
7月前
|
Java 数据库连接
JAVA 特性 异常机制
当程序抛出一个异常后,从程序中导致异常的代码处跳出,Java虚拟机检测寻找和try关键字匹配的处理该异常的catch块。 如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。 如果没有找到处理该异常的catch块,最终运行时报错。
|
算法 搜索推荐 Java
Java程序员需要掌握的算法
Java程序员需要掌握的算法
|
监控 IDE Java
Java 基础 - 异常机制详解(三)
Java 基础 - 异常机制详解
85 1
Java 基础 - 异常机制详解(三)
|
Java 测试技术
Java 基础 - 异常机制详解(四)
Java 基础 - 异常机制详解
84 1
|
Java Python
JAVA|初识Java常见误区
JAVA|初识Java常见误区
75 0
|
监控 安全 Java
Java 基础 - 异常机制详解(二)
Java 基础 - 异常机制详解
99 0
|
Java 编译器 数据库连接
Java 基础 - 异常机制详解(一)
Java 基础 - 异常机制详解
115 0