解读@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中synchronized锁升级的过程

    Java中synchronized锁升级的过程

    本文主要介绍了Java中synchronized锁升级的过程,synchronized相对于早期的synchronized做出了优化,从以前的加锁就是重量级锁优化成了有一个锁升级的过,下文详细内容需要的小伙伴可以参考一下
    2022-05-05
  • Spring中的spring-retry重试机制解析

    Spring中的spring-retry重试机制解析

    这篇文章主要介绍了Spring中的spring-retry重试机制解析,spring-retry可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能,在spring-retry中,所有配置都是基于简单注释的,需要的朋友可以参考下
    2024-01-01
  • 升级springboot中spring框架的版本的实现方法

    升级springboot中spring框架的版本的实现方法

    本文主要介绍了升级springboot中spring框架的版本的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • logback-spring.xml的内容格式详解

    logback-spring.xml的内容格式详解

    这篇文章主要介绍了logback-spring.xml的内容格式详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的的朋友参考下吧
    2023-11-11
  • Spring自动配置之condition条件判断上篇

    Spring自动配置之condition条件判断上篇

    这篇文章主要为大家介绍了SpringBoot condition条件判断功能的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java责任链模式模板代码分享

    Java责任链模式模板代码分享

    这篇文章主要介绍了Java责任链模式模板代码分享,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 使用Spring Boot 2.x构建Web服务的详细代码

    使用Spring Boot 2.x构建Web服务的详细代码

    这篇文章主要介绍了使用Spring Boot 2.x构建Web服务的详细代码,主要基于JWT的身份认证,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • mybatis对传入基本类型参数的判断方式

    mybatis对传入基本类型参数的判断方式

    这篇文章主要介绍了mybatis对传入基本类型参数的判断方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 解决在for循环中remove list报错越界的问题

    解决在for循环中remove list报错越界的问题

    这篇文章主要介绍了解决在for循环中remove list报错越界的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java 深入浅出讲解代理模式

    Java 深入浅出讲解代理模式

    代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象
    2022-03-03

最新评论