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传参方式:

总结

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

相关文章

  • SpringBoot使用Prometheus实现监控

    SpringBoot使用Prometheus实现监控

    在当今的软件开发世界中,监控是至关重要的一部分,本文主要介绍了如何在Spring Boot应用程序中使用Prometheus进行监控,以帮助大家更好地理解和管理您的应用程序,有需要的可以参考下
    2023-10-10
  • 关于 Java 的数据结构链表

    关于 Java 的数据结构链表

    这篇文章主要介绍了关于 Java 的数据结构链表的相关资料,需要的朋友可以参考下面文章内容
    2021-09-09
  • Spring Cloud 系列之负载均衡 Ribbon的示例代码

    Spring Cloud 系列之负载均衡 Ribbon的示例代码

    Ribbon 是 Netflix 发布的负载均衡器,它有助于控制 HTTP 和 TCP 客户端的行为。这篇文章主要介绍了Spring Cloud 系列之负载均衡 Ribbon的示例代码,需要的朋友可以参考下
    2020-11-11
  • Java中TreeSet、HashSet、Collection重写比较器的实现

    Java中TreeSet、HashSet、Collection重写比较器的实现

    比较器是一种可以对集合或数组中的元素按照自定义的方式进行排序的对象,本文主要介绍了Java中TreeSet、HashSet、Collection重写比较器的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-08-08
  • 简述JAVA同步、异步、阻塞和非阻塞之间的区别

    简述JAVA同步、异步、阻塞和非阻塞之间的区别

    这篇文章主要介绍了JAVA同步、异步、阻塞和非阻塞之间的区别,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • Spring MVC请求处理流程和九大组件详解

    Spring MVC请求处理流程和九大组件详解

    这篇文章主要介绍了Spring MVC请求处理流程和九大组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • SSH框架的常见问题和解决方法

    SSH框架的常见问题和解决方法

    SSH框架的常见问题和解决方法,需要的朋友可以参考一下
    2013-02-02
  • Spring boot整合log4j2过程解析

    Spring boot整合log4j2过程解析

    这篇文章主要介绍了Spring boot整合log4j2过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java中Hutool克隆功能的使用

    Java中Hutool克隆功能的使用

    本文主要介绍了Java中Hutool克隆功能的使用,cn.hutool.core.clone.Cloneable 是Hutool中提供的一个接口,用于支持对象的深度克隆操作,下面就一起来介绍一下
    2024-04-04
  • java中 利用正则表达式提取( )内内容

    java中 利用正则表达式提取( )内内容

    本篇文章,小编为大家介绍关于java中 利用正则表达式提取( )内内容,有需要的朋友可以参考一下
    2013-04-04

最新评论