解讀@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>等標(biāo)簽屬于xml語法,必須配合<script>標(biāo)簽使用。
@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)用進行密碼安全認(rèn)證操作
這篇文章主要介紹了微服務(wù)通過Feign調(diào)用進行密碼安全認(rèn)證操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot權(quán)限認(rèn)證-Sa-Token的使用詳解
Sa-Token是一款輕量級Java權(quán)限認(rè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)容,需要的朋友們學(xué)習(xí)下。2019-03-03
springcloud gateway設(shè)置context-path的操作
這篇文章主要介紹了springcloud gateway設(shè)置context-path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

