项目日常0918
2024-04-09 18:10:45  阅读数 254

1. List --> NullPointerException

EXP:

List<Wgab07Ab01ResDTO> wgab07Ab01ResDTOS = steadyDoUnemployDAO.rollbackWgab07HaveAab001(paramsSteadyDTO);
    if(CollectionUtils.isEmpty(wgab07Ab01ResDTOS) && wgab07Ab01ResDTOS.size()==0){
        throw new BusinessException("没有符合条件的应付核定记录!");
    }
}

2. Get sequence

① Long key = commonBLO.getSeq("seq_a_operation");

② islInfoDao.getSequence("SEQ_A_OPERATION")

3. Mybatis #{}${}

将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。

如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111",

如果传入的值是id,则解析成的sql为order by "id".

$将传入的数据直接显示生成在sql中。

如:order by $user_id 如果传入的值是111,那么解析成sql时的值为order by user_id,

如果传入的值是id,则解析成的sql为order by id.

可以防止SQL注入,$不可以

如何防止SQL注入?

注意:SQL语句不要写成select * from t_stu where s_name like '%name%',这样极易受到注入攻击。

{}格式参数会直接参与sql编译,从而导致注入攻击,但是涉及动态的表名列名只能使用{}
如果不能避免使用${},需要做好过滤工作避免sql注入

if (!StringUtil.isEmpty(this.companyName)) {  
    table.setCompanyName("%" + this.companyName + "%");  
}
Mapper
<sql id="condition_where">  
    <isNotEmpty property="companyName" prepend=" and ">  
        t1.company_name like #companyName#  
    </isNotEmpty>  
</sql> 

4.项目参数

String aae011 = super.getOperatorName();

String aab034 = super.getUnitCode();