mybatis使用foreach踩坑及解决

 更新时间:2024年08月20日 09:07:53   作者:大佬喝可乐丶  
这篇文章主要介绍了mybatis使用foreach踩坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mybatis使用foreach踩坑记录

在使用fireach是最关键的是collection属性

dao层

单参数List和多参数的list

    /*通过表名(日期)查询*/
    List<WagesInfoVo> selectWagesBySheet(List<String> sheetNameList);

    /*通过用户名+表名(日期)查询*/
    List<WagesInfoVo> selectByPerson(@Param("personNumber") String personNumber,
                                     @Param("sheetNameList") List<String> sheetNameList);

xml文件中foreach属性的选择

  • 单参数的collection=“list”
  • 多参数的collection=“sheetNameList”,sheetNameList为传入的参数
 <select id="selectWagesBySheet" parameterType="java.lang.String"
            resultType="com.zl.wagesmanage.vo.wages.WagesInfoVo">
        select person_number as personNumber,user_name as userName,
        account_number as accountNumber,wage as wage,other_money as otherMoney,reward as reward,
        should as should,old as old,medical as medical,lose_job as loseJob,trade_union as tradeUnion,
        housing_fund as housingFund,take_off as takeOff,total as total,sheet_name as sheetName
        from tt_excel_wages
        where sheet_name in
        <foreach collection="list" index="index" item="sheetNameList"
                 open="(" separator="," close=")">
            #{sheetNameList}
        </foreach>
    </select>

    <select id="selectByPerson" parameterType="java.lang.String"
            resultType="com.zl.wagesmanage.vo.wages.WagesInfoVo">
        select person_number as personNumber,user_name as userName,
        account_number as accountNumber,wage as wage,other_money as otherMoney,reward as reward,
        should as should,old as old,medical as medical,lose_job as loseJob,trade_union as tradeUnion,
        housing_fund as housingFund,take_off as takeOff,total as total,sheet_name as sheetName
        from tt_excel_wages
        where person_number=#{personNumber}
        and sheet_name in
        <foreach collection="sheetNameList" index="index" item="sheetNameList"
                 open="(" separator="," close=")">
            #{sheetNameList}
        </foreach>
    </select>

controller层传参说明

这里我都是使用@RequestParam进行传参,列举了get请求和post请求

    /*通过excel的表名进行查询*/
    @GetMapping(value = "getWages")
    @ResponseBody
    public ResponseVO getWages(@RequestParam("sheetNames")List<String> sheetNames){
        try {
            WagesRequestVo wagesRequestVo =new WagesRequestVo();
            //获取数据
            List<WagesInfoVo> wagesInfoVos = wagesServer.getWagesBySheet(sheetNames);

            wagesRequestVo.setWagesInfoVoList(wagesInfoVos);
            if (wagesInfoVos==null){
                return ResponseVO.appFail("查询失败");
            }
            return ResponseVO.success(wagesRequestVo);
        }catch (Exception e){
            return ResponseVO.serviceFail(e.getMessage());
        }
    }

    /*通过用户名和表名进行查询*/
    @PostMapping("getWagesByNumber")
    @ResponseBody
    public  ResponseVO getWagesByNumber(@RequestParam("personNumber")String personNumber,
                                        @RequestParam("sheetName[]")List<String> sheetName){
        try {
            WagesRequestVo wagesRequestVo =new WagesRequestVo();
            //获取数据
            List<WagesInfoVo> wagesInfoVos = wagesServer.getWagesByPerson(personNumber,sheetName);

            wagesRequestVo.setWagesInfoVoList(wagesInfoVos);
            if (wagesInfoVos==null){
                return ResponseVO.appFail("查询失败");
            }
            return ResponseVO.success(wagesRequestVo);
        }catch (Exception e){
            return ResponseVO.serviceFail(e.getMessage());
        }
    }

postman截图

  • get请求传参方式:

  • post传参方式:

总结

 以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis-Plus 修改和添加自动填充时间方式

    MyBatis-Plus 修改和添加自动填充时间方式

    这篇文章主要介绍了MyBatis-Plus 修改和添加自动填充时间方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java压缩集合的三种方法

    Java压缩集合的三种方法

    这篇文章主要介绍了Java压缩集合的三种方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-01-01
  • 一场由Java中Integer引发的踩坑实战

    一场由Java中Integer引发的踩坑实战

    Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类),下面这篇文章主要给大家介绍了关于由Java中Integer引发的踩坑实战,需要的朋友可以参考下
    2022-11-11
  • zookeeper概述图文详解

    zookeeper概述图文详解

    今天小编就为大家分享一篇关于Zookeeper概述图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java毕业设计实战之在线高中考试系统的实现

    Java毕业设计实战之在线高中考试系统的实现

    这是一个使用了java+SSM+Jsp+Mysql+Maven开发的在线高中考试系统,是一个毕业设计的实战练习,具有考试系统该有的所有功能,感兴趣的朋友快来看看吧
    2022-02-02
  • java8如何用Stream查List对象某属性是否有重复

    java8如何用Stream查List对象某属性是否有重复

    这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot 开发提速神器 Lombok+MybatisPlus+SwaggerUI

    SpringBoot 开发提速神器 Lombok+MybatisPlus+SwaggerUI

    这篇文章主要介绍了SpringBoot 开发提速神器 Lombok+MybatisPlus+SwaggerUI,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • myBatis使用@GeneratedValue(generator = “...“, strategy = ...)注解

    myBatis使用@GeneratedValue(generator = “...“, strategy = 

    这篇文章主要介绍了myBatis使用@GeneratedValue(generator = “...“, strategy = ...)注解问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Spring源码解析 Bean的实例化

    Spring源码解析 Bean的实例化

    这篇文章主要介绍了Spring源码解析 Bean的实例化,文章围绕主题展开详细的内容介绍没具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Flowable数据库表分类及数据字典解析

    Flowable数据库表分类及数据字典解析

    这篇文章主要介绍了Flowable数据库表分类及数据字典解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论