解读@SelectProvider的使用方法

 更新时间:2024年08月20日 08:45:58   作者:喜欢你的名字和你笑的样子  
这篇文章主要介绍了@SelectProvider的使用方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

解读@SelectProvider的使用

首先在mapper里面写个方法

@SelectProvider(type = SalesOrderProvider.class, method = "selectSalesInformation")
    List<SalesInformation> selectSalesInformation(@Param("createDateStart") String createDateStart, @Param("createDateEnd") String createDateEnd);

然后再在SalesOrderProvider.class这个类里面写方法

public String selectSalesInformation(@Param("createDateStart") String createDateStart, @Param("createDateEnd") String createDateEnd){
        StringBuffer sql = new StringBuffer();
        sql.append(" SELECT ORDER_STATUS,b.number,b.unit_price,a.CREATE_DATE FROM hl4pl_sales_order a join hl4pl_sales_order_goods b ");
        sql.append(" where a.ID=b.ID and a.CREATE_DATE BETWEEN #{createDateStart} and #{createDateEnd} ");
        sql.append(" HAVING ORDER_STATUS =8 or ORDER_STATUS =6 ");
        return sql.toString();
    }

最后就在实现类里面直接调用就好了。

public SalesInformaitonVo getSalesInformation(String createDateStart, String createDateEnd){
        List<SalesInformation> salesInformations = salesOrderMapper.selectSalesInformation(createDateStart,createDateEnd);
        BigDecimal salesVolume = BigDecimal.ZERO;//销售额
        BigDecimal totalOrders = BigDecimal.ZERO;//订单总量
        int totalSales = salesInformations.size();//销售总量
        for (SalesInformation salesInformation : salesInformations) {
            if (salesInformation.getNumber()!=null&&salesInformation.getUnitPrice()!=null&&salesInformation.getNumber()!=BigDecimal.ZERO&&salesInformation.getUnitPrice()!=BigDecimal.ZERO){
                salesVolume = salesVolume.add(salesInformation.getNumber().multiply(salesInformation.getUnitPrice()));
                totalOrders = totalOrders.add(salesInformation.getNumber());
            }
        }
        SalesInformaitonVo salesInformaitonVo = new SalesInformaitonVo();
        salesVolume=salesVolume.divide(BigDecimal.valueOf(10000));
        BigDecimal bigDecimal = salesVolume.setScale(2, BigDecimal.ROUND_UP);//四舍五入两位小数
        salesInformaitonVo.setSalesVolume(bigDecimal);
        salesInformaitonVo.setTotalOrders(totalOrders);
        salesInformaitonVo.setTotalSales(totalSales);
        return salesInformaitonVo;
    }

@Select @SelectProvider中使用foreach时不生效问题

问题

@Select @SelectProvider中使用<foreach>时不生效。

解决办法

<foreach>、<when>等标签属于xml语法,必须配合<script>标签使用。

@Select({"<script>",
    "SELECT * FROM tbl_order",
    "WHERE 1=1",
    "<when test='title!=null'>",
    "AND mydate = #{mydate}",
    "</when>",
    "</script>"})
List<ExpendVo> queryExpend(ExpendDto dto);

总结

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

相关文章

  • 使用Java获取文件树的代码实现

    使用Java获取文件树的代码实现

    Java语言提供了丰富的库和工具,使得我们可以方便地获取和操作Java文件的语法树(AST, Abstract Syntax Tree),在这篇博客中,我们将探讨如何使用Java来获取一个Java文件的语法树,并展示详细的代码示例和运行结果,需要的朋友可以参考下
    2024-08-08
  • Spring boot 使用QQ邮箱进行一个验证登入功能

    Spring boot 使用QQ邮箱进行一个验证登入功能

    这篇文章主要介绍了Spring boot 使用QQ邮箱进行一个验证登入,主要包括qq邮箱开启权限和创建发送验证码的请求Controller,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • java高并发的并发级别详解

    java高并发的并发级别详解

    这篇文章主要介绍了java高并发的并发级别,内容十分丰富,在这里分享给大家,需要的朋友可以参考,希望能够给你带来帮助
    2021-10-10
  • 深入理解Java中的WeakHashMap

    深入理解Java中的WeakHashMap

    这篇文章主要介绍了深入理解Java中的WeakHashMap,WeakHashMap从名字可以得知主要和Map有关,不过还有一个Weak,我们就更能自然而然的想到这里面还牵扯到一种弱引用结构,因此想要彻底搞懂,我们还需要知道四种引用,需要的朋友可以参考下
    2023-09-09
  • Spring Boot项目获取resources目录下文件并返回给前端的方案

    Spring Boot项目获取resources目录下文件并返回给前端的方案

    我们在项目中经常碰到需要读取固定文件的场景,如模板文件,一般做法是将文件放在resources目录下,程序通过多种方式可以顺利读取文件,这篇文章主要给大家介绍了关于Spring Boot项目获取resources目录下文件并返回给前端的相关资料,需要的朋友可以参考下
    2024-07-07
  • 微服务通过Feign调用进行密码安全认证操作

    微服务通过Feign调用进行密码安全认证操作

    这篇文章主要介绍了微服务通过Feign调用进行密码安全认证操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot权限认证-Sa-Token的使用详解

    SpringBoot权限认证-Sa-Token的使用详解

    Sa-Token是一款轻量级Java权限认证框架,它简化了权限管理,提高了开发效率,本文通过实例介绍了Sa-Token的基本概念、与其他框架的比较、基本语法和高级用法,并探讨了其核心原理和实际应用场景,感兴趣的朋友一起看看吧
    2024-09-09
  • 详解Java的call by value和call by reference

    详解Java的call by value和call by reference

    在本篇文章里小编给大家总结了关于Java的call by value和call by reference的相关用法和知识点内容,需要的朋友们学习下。
    2019-03-03
  • Java中的SkyWalking监控告警详解

    Java中的SkyWalking监控告警详解

    这篇文章主要介绍了Java中的SkyWalking监控告警详解,SkyWalking在6.x版本中新增了告警功能,其核心在于config/alarm-settings.yaml文件中,该文件分为rules和webhooks两部分,需要的朋友可以参考下
    2023-11-11
  • springcloud gateway设置context-path的操作

    springcloud gateway设置context-path的操作

    这篇文章主要介绍了springcloud gateway设置context-path的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论