解讀@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(); }
最后就在實現(xiàn)類里面直接調(diào)用就好了。
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);//四舍五入兩位小數(shù) 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);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot項目獲取resources目錄下文件并返回給前端的方案
我們在項目中經(jīng)常碰到需要讀取固定文件的場景,如模板文件,一般做法是將文件放在resources目錄下,程序通過多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下2024-07-07微服務(wù)通過Feign調(diào)用進行密碼安全認證操作
這篇文章主要介紹了微服務(wù)通過Feign調(diào)用進行密碼安全認證操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06SpringBoot權(quán)限認證-Sa-Token的使用詳解
Sa-Token是一款輕量級Java權(quán)限認證框架,它簡化了權(quán)限管理,提高了開發(fā)效率,本文通過實例介紹了Sa-Token的基本概念、與其他框架的比較、基本語法和高級用法,并探討了其核心原理和實際應(yīng)用場景,感興趣的朋友一起看看吧2024-09-09詳解Java的call by value和call by reference
在本篇文章里小編給大家總結(jié)了關(guān)于Java的call by value和call by reference的相關(guān)用法和知識點內(nèi)容,需要的朋友們學習下。2019-03-03springcloud gateway設(shè)置context-path的操作
這篇文章主要介紹了springcloud gateway設(shè)置context-path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07