resulttype返回bigdecimal类型的list
时间: 2024-05-14 18:17:35 浏览: 11
可以使用Java 8的Stream API来实现返回一个BigDecimal类型的List。下面是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<Double> doubles = Arrays.asList(1.1, 2.2, 3.3);
List<BigDecimal> bigDecimals = doubles.stream()
.map(BigDecimal::valueOf)
.collect(Collectors.toList());
System.out.println(bigDecimals);
}
}
```
这个示例代码将一个Double类型的List转换为一个BigDecimal类型的List,并且使用了Java 8的Stream API中的map和collect方法。其中,map方法将每个Double类型的元素转换为一个BigDecimal类型的元素,collect方法将这些BigDecimal类型的元素收集到一个List中。
相关问题
java的mapperxml返回bigdecimal类型list写个例子
好的,以下是一个返回`BigDecimal`类型`List`的Java Mapper XML示例:
```
<!-- 定义查询语句 -->
<select id="getBigDecimalList" resultType="java.math.BigDecimal">
SELECT amount FROM my_table
</select>
```
在这个示例中,我们定义了一个名为`getBigDecimalList`的查询语句,该语句从`my_table`表中选择`amount`列。请注意,`resultType`属性被设置为`java.math.BigDecimal`,这是告诉MyBatis我们期望返回一个`List<BigDecimal>`。
在Java代码中,您可以像这样调用Mapper:
```
List<BigDecimal> bigDecimalList = myMapper.getBigDecimalList();
```
这将返回`my_table`中所有`amount`列的`BigDecimal`值的列表。
vo类 public class ArealRainfallVo implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "区域编码") private String code; @ApiModelProperty(value = "雨量总和") private BigDecimal value; } Mapper类 public interface WeightBetweenObjectAndRainfallStationMapper extends BaseMapper<WeightBetweenObjectAndRainfallStation> { List<ArealRainfallVo> ListbySumList (List<PointRainfallSumVO> list); } mapper配置类 <mapper namespace="com.ndwp.jboot.bootstrap.mapper.WeightBetweenObjectAndRainfallStationMapper"> <select id="ListbySumList" resultType="com.ndwp.jboot.bootstrap.entity.vo.ArealRainfallVo"> SELECT code, SUM(CASE <foreach collection="list" item = "item"> WHEN rainfall_station_code = '${item.getCode()}' THEN weight * ${item.getValue()} </foreach> END ) AS value FROM bootstrap.weight_between_object_and_rainfall_station GROUP BY code; </select> </mapper> 服务类 public interface IWeightBetweenObjectAndRainfallStationService extends BaseService<WeightBetweenObjectAndRainfallStation> { List<ArealRainfallVo> listAreaRainfall(Date start, Date end); } 服务实现类 @Service public class WeightBetweenObjectAndRainfallStationServiceImpl extends BaseServiceImpl<WeightBetweenObjectAndRainfallStationMapper, WeightBetweenObjectAndRainfallStation> implements IWeightBetweenObjectAndRainfallStationService { @Autowired IDataHistoricRainfallService dataHistoricRainfallService; @Override public List<ArealRainfallVo> listAreaRainfall(Date start, Date end) { List<PointRainfallSumVO> pointRainfallSumVOS = dataHistoricRainfallService.listAllPointRainfallByTime(start, end); return baseMapper.ListbySumList(pointRainfallSumVOS); } } 控制台打印的sql语句能够正常运行,结合代码分析一下为何会返回四个空对象?
根据你提供的代码,我注意到你在mapper配置文件中使用了foreach循环来动态生成SQL语句中的条件部分。然而,你在foreach循环中使用了`${item.getCode()}`和`${item.getValue()}`来获取集合中每个元素的属性值,这是不正确的。
在MyBatis中,`${}`语法用于替换普通的字符串,它不会对参数进行预处理或转义。所以在你的SQL语句中,`${item.getCode()}`和`${item.getValue()}`会被直接替换为对应元素的`getCode()`和`getValue()`方法的返回值,而不是参数值。
为了修复这个问题,你可以改用`#{}`语法来将参数作为预处理参数传递给SQL语句。修改后的mapper配置文件如下所示:
```xml
<mapper namespace="com.ndwp.jboot.bootstrap.mapper.WeightBetweenObjectAndRainfallStationMapper">
<select id="ListbySumList" resultType="com.ndwp.jboot.bootstrap.entity.vo.ArealRainfallVo">
SELECT code, SUM(CASE
<foreach collection="list" item="item" separator=" ">
WHEN rainfall_station_code = #{item.code} THEN weight * #{item.value}
</foreach> END ) AS value
FROM bootstrap.weight_between_object_and_rainfall_station
GROUP BY code;
</select>
</mapper>
```
修改后重新运行代码,应该能够正确地获取到数据库中的数据并返回非空对象。