我有一个表名high_utilization,
带有列,
varchar name_utilization,
float utilization,
varchar monitoring_tool,
varchar location,
varchar device_type,
varchar environment,
varchar Org_filter_1,
varchar Org_filter_2,
varchar Domain_filter_1,
varchar Domain_filter_2;
但是在以JSON格式输出时,我只需要两个字段name_utilization, utilization
我正在如下记录我的存储库文件
public interface high_utilizationRepo extends CrudRepository<high_utilization,Integer> {
@Query(value="select a.name_utilization as 'name_utilization',a.utilization as 'utilization' "
+ " from high_utilization a WHERE a.monitoring_tool in (:monitoring_tool) "
+ "AND a.location in (:location) AND a.device_type in (:device_type) AND a.environment in (:environment) "
+ "AND a.Org_filter_1 in (:Org_filter_1) AND a.Org_filter_2 in (:Org_filter_2) AND "
+ "a.Domain_filter_1 in (:Domain_filter_1) AND a.Domain_filter_2 in (:Domain_filter_2) "
+ " order by utilization desc limit 5",nativeQuery=true)
String[] info_of_high_utilization_with_params(@Param("monitoring_tool") List<String>
monitoring_tool,
@Param("location") List<String> location, @Param("device_type") List<String> device_type,
@Param("environment") List<String> environment,@Param("Org_filter_1") List<String> Org_filter_1,
@Param("Org_filter_2") List<String> Org_filter_2,@Param("Domain_filter_1") List<String> Domain_filter_1,
@Param("Domain_filter_2") List<String> Domain_filter_2);
我知道我可以使用findAll(Specification <high_utilization>)
,但是我想在自己定义的具有8个参数的函数info_of_high_utilization_with__params上使用该规范。
我应该如何写下程序?
根据您在执行自定义查询时所看到的,它返回对象数组(这里是字符串)。因此,您必须根据需要手动设置。
示例:
DTO:
@Data
public class TempDTO {
private String email;
private String phno;
}
存储库:
@Query(nativeQuery = true, value = "SELECT email, phone_no FROM ec_user")
List<String[]> findEmailAndPhoneNoBasedOnUsername();
服务:
@Override
public List<TempDTO> getEmailAndPhoneNo(String username) {
List<TempDTO> result = new ArrayList<>();
List<String[]> dataList = userRepository.findEmailAndPhoneNoBasedOnUsername();
for (String[] strArray : dataList) {
TempDTO tempDTO = new TempDTO();
tempDTO.setEmail(strArray[0]);
tempDTO.setPhno(strArray[1]);
result.add(tempDTO);
}
return result;
}
使用流api进行服务。