我先说明一下定定义,拉运地:地图中的一个点包含经度和维度,也是“起点”,运往地:地图中的一个点包含经度和维度,也是“终点”。我的数据库里存放着很多拉运地和运往地的坐标点。现在,我想要一个java语言编写的代码,我可以传入拉运地的偏差范围和运往地的偏差范围,然后从数据库中给我返回符合条件的坐标信息。注意:1. 我用的持久化框架是mybaties。2. 我传入的偏差范围是一个单位为"千米"的数。3. 我要的代码类型为工具类
时间: 2023-03-30 17:02:30 浏览: 134
好的,根据您的需求,我可以为您提供以下的Java工具类代码:
```
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class CoordinateUtils {
private static SqlSessionFactory sessionFactory;
static {
String resource = "mybatis-config.xml";
sessionFactory = new SqlSessionFactoryBuilder().build(
CoordinateUtils.class.getClassLoader().getResourceAsStream(resource)
);
}
public static List<Coordinate> getCoordinates(double fromLat, double fromLng, double toLat, double toLng, double fromRange, double toRange) {
try (SqlSession session = sessionFactory.openSession()) {
CoordinateMapper mapper = session.getMapper(CoordinateMapper.class);
return mapper.selectByRange(fromLat, fromLng, toLat, toLng, fromRange, toRange);
}
}
public static class Coordinate {
private double lat;
private double lng;
public Coordinate(double lat, double lng) {
this.lat = lat;
this.lng = lng;
}
public double getLat() {
return lat;
}
public double getLng() {
return lng;
}
}
public interface CoordinateMapper {
List<Coordinate> selectByRange(double fromLat, double fromLng, double toLat, double toLng, double fromRange, double toRange);
}
}
```
您需要在mybatis-config.xml中配置数据库连接信息和CoordinateMapper的映射关系。然后,您可以使用以下代码来调用工具类:
```
List<CoordinateUtils.Coordinate> coordinates = CoordinateUtils.getCoordinates(
fromLat, fromLng, toLat, toLng, fromRange, toRange
);
```
其中,fromLat、fromLng、toLat、toLng分别表示拉运地和运往地的经纬度,fromRange、toRange分别表示拉运地和运往地的偏差范围。返回的coordinates列表中包含符合条件的坐标信息。
阅读全文