还是老话 人狠话不多,直接上代码.
DataCommonTemplate 是一个实体类
控制器代码
接受List类型的参数
@PostMapping(value = "/add-data-common-tmp" )
public Result addDataCommonTmp(@Validated @RequestBody List<DataCommonTemplate> dataCommonTemplate, BindingResult bindingResult)
{
if (bindingResult.hasErrors()){
throw new MyException("-1",bindingResult.getFieldError().getDefaultMessage());
}
int resultNumber = dataCommonTmpService.insertCommonMenu(dataCommonTemplate);
System.out.println(resultNumber);
if(resultNumber == -2){
return ......;
}
return .......
}
�
service 代码
public int insertCommonMenu(List<DataCommonTemplate> dataCommonTemplate)
{
//循环去校验每条数据
for( DataCommonTemplate dataCommon : dataCommonTemplate) {
Boolean checkRes = checkNameAndGameId(dataCommon.getModuleId(),dataCommon.getChildId(),
dataCommon.getTabName(),ADD_TYPE,0);
if(checkRes == false){
return .....;
}
}
//这里还是传送的是list
return dataCommonTmpMapper.insertDataCommonTmp(dataCommonTemplate);
}
Mapper层
//注意这里的写一个list 参数接受 要不然会拿不到值
@InsertProvider(type=DataCommonTmpProvider.class,method = "inserData")
int insertDataCommonTmp(@Param("list") List<DataCommonTemplate> dataCommonTemplate);
接下来看 DataCommonProvider
/**
* 该功能用于处理List级别的参数 其中的各种字段我用xx代替了
* 只是为了说明功能请不要做各种无聊和恶意的事,谢谢
* @param map
* @return
*/
public String inserData(Map map) {
List<DataCommonTemplate> users = (List<DataCommonTemplate>) map.get("list");
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO sss");
sb.append("(module_id,parent_id,child_id, front_template_id,tab_name,header_url,data_url,header_sort) ");
sb.append("VALUES ");
MessageFormat mf = new MessageFormat("(#'{'list[{0}].moduleId},#'{'list[{0}].xx},#'{'list[{0}].xx}," +
" #'{'list[{0}].xxx} ,#'{'list[{0}].xx},#'{'list[{0}].xx},#'{'list[{0}].xx},#'{'list[{0}].xxx})");
for (int i = 0; i < users.size(); i++) {
sb.append(mf.format(new Object[]{i}));
if (i < users.size() - 1) {
sb.append(",");
}
}
System.out.println(sb.toString()); 打印sql
return sb.toString();
}
�
最后再补充下 如果你不知道mapper和provider之间的关系 希望下图可以帮助你
其实我这里的xxxprovider是写动态sql 的时候简单的sql活着其他一些常规的接受方式没法满足我的需求,
因此来用这个xxxprovider 方式去自己实现 ,我这里理解的就和service层一样 声明一个接口 再使用一个 xxxImp 的方法去实现
结构如下 :