一 、判空条件
以后String判空不能一昧使用如下方法,要学会使用org.apache.commons.lang3.StringUtils
类提供了 String 的常用操作,最为常用的判空有如下两种 isBlank(String str)
(可判断判断参数:是否为空,长度是否为0,值是否包含空白字符、制表符、换行符、换页符和回车符都视为空白字符)和 isEmpty(String str)
,但是 isEmpty(String str)
和如下一样,条件太少
if(str != null && str.length != 0){
return true;
}
二、linux与windows有许多差别会引起结果不同
- Linux与windows之间md5加密会引起不同 (如果有中文)
解决方法:
//转化字节,并选择utf-8
byte[] btInput = bs.getBytes("UTF-8");
三、在进行数据存储时,解决实体类与DTO属性不完全相同
serviceImpl
Entity entity = SmartBeanUtil.copy(DTO, Entity.class);
SmartBeanUtil
/**
* 复制对象
*
* @param source 源 要复制的对象
* @param target 目标 复制到此对象
* @param <T>
* @return
*/
public static <T> T copy(Object source, Class<T> target) {
if(source == null || target == null){
return null;
}
try {
T newInstance = target.newInstance();
BeanUtils.copyProperties(source, newInstance);//copyProperties为JDK中的方法
return newInstance;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
四、字符串拼接不要用+
可以使用StringBuilder或者StringBuffer
五、实体类字段类型不要使用基本数据类型
由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型.
六、实体类加@id注解
默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低).
七、避免写出大类,类的字段过多
引入应用服务层,在应用服务层去协调各个领域服务层。而在领域服务层,一个服务通常只对应一个数据库访问层的代码。
八、mybatis入参为0时,判断时要加上or status==0 或者删去and status != ‘’
mybatis的Integer类型参数如果有为0的可能,在if标签判断中还应该单独加入判断,否则参数0会当成空字符串处理,所以应该改写为这种写法:
<if test="status != null and status != '' or status==0">AND t1.status =#{status}</if>
或者
<if test="status != null">AND t1.status =#{status}</if>