我先说明一下定定义, 拉运地:地图中的一个点,包含经度和维度,也是“起点”, 运往地:地图中的一个点,包含经度和维度,也是“终点”。 起始偏差范围:以起点或终点为圆心的半径,是一个数值。 终止偏差范围:以起点或终点为圆心的半径,是一个数值。 匹配偏差范围:从“起始偏差范围”画出的圆开始,到“终止偏差范围”之间的总区域。 下面我将“起始偏差范围“和”终止偏差范围“统称为”偏差范围“。 我的数据库里存放着很多拉运地和运往地的坐标点。 现在,我想要一个java语言编写的代码,我可以传入拉运地的偏差范围和运往地的偏差范围,然后从数据库中给我返回符合条件的坐标信息。 注意: 1. 我用的持久化框架是mybaties-plus。 2. 我要的代码类型为工具类。 3. 要求有良好的注释
时间: 2023-04-01 20:01:36 浏览: 78
垃圾场土方拉运情况说明.docx
好的,根据您的需求,我可以为您提供以下Java工具类代码,用于从数据库中获取符合条件的坐标信息:
```
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.additional.query.impl.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class CoordinateUtil extends ServiceImpl<CoordinateMapper, Coordinate> {
@Autowired
private CoordinateMapper coordinateMapper;
/**
* 根据拉运地和运往地的偏差范围,从数据库中获取符合条件的坐标信息
*
* @param startDeviation 起始偏差范围
* @param endDeviation 终止偏差范围
* @return 符合条件的坐标信息列表
*/
public List<Coordinate> getCoordinatesByDeviation(double startDeviation, double endDeviation) {
// 计算匹配偏差范围
double matchDeviation = endDeviation - startDeviation;
// 构造查询条件
QueryWrapper<Coordinate> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.ge(Coordinate::getLatitude, startDeviation)
.le(Coordinate::getLatitude, endDeviation)
.ge(Coordinate::getLongitude, startDeviation)
.le(Coordinate::getLongitude, endDeviation)
.apply("POWER(latitude - ?, 2) + POWER(longitude - ?, 2) <= POWER(?, 2)", coordinateMapper.getLat(), coordinateMapper.getLng(), matchDeviation);
// 执行查询并返回结果
return coordinateMapper.selectList(queryWrapper);
}
}
```
这段代码使用了Mybatis-Plus框架,通过构造查询条件,从数据库中获取符合条件的坐标信息,并返回结果列表。其中,`Coordinate`是您的实体类,`CoordinateMapper`是您的Mapper接口,`coordinateMapper`是您的Mapper实例。在使用时,您需要将`startDeviation`和`endDeviation`作为参数传入该方法中。
希望这段代码能够满足您的需求,如有任何问题,请随时联系我。
阅读全文