mybatis的mapper接口方法参数是对象,对象中包含list情况的处理

问题:
mybatis的mapper接口方法的参数是一个普通的java对象,但是java对象中包含有list类型的属性,例如我的查询参数模型是
CompanyRecordQueryModel .java
public class CompanyRecordQueryModel extends PaginationViewModel {
    private String recordTime;
    private String companyType;
    private String companyRecordCode;
    private String customsCode;
    private List customsCodeList; 
	
	.....
}
List customsCodeList是要在mybatis的mapper xml 的select中使用的参数。
mapper接口如下:
CebPreCompanyInfoZsMapperExt.java
@SimpleDao
public interface CebPreCompanyInfoZsMapperExt extends CebPreCompanyInfoZsMapper {
    List selectCompanyInfoByPage(CompanyRecordQueryModel companyRecordQueryModel);
}
mapper对应的xml,使用if foreach表达式代码片段如下:
CebPreCompanyInfoZsMapperExt.xml
这种写法不行,运行后会报异常,list类型的参数没有被正确解析。
解决方法一:
http://blog.csdn.net/u013032615/article/details/52909433
这个博客的解决方法,将 #{item} 改成 #{customsCodeList[${index}],jdbcType=VARCHAR}, 可以正常运行。
在此感谢你的解决办法。
解决方法二:
1. 修改mapper接口方法的参数,增加注解 @Param("companyRecordQueryModel"), 名字 companyRecordQueryModel 随便起
List selectCompanyInfoByPage(@Param("companyRecordQueryModel") CompanyRecordQueryModel companyRecordQueryModel);
2. 修改if表达式语句,都加上名字 companyRecordQueryModel, 重点是collection改成companyRecordQueryModel.customsCodeList

            and v.CUSTOMS_CODE in
            
                #{item}
            
    
这样也可以正常运行。

你可能感兴趣的:(java)