Mysql 有没有一种方法可以在spring中将从客户端发送的值传递给sql查询的局部变量?
我目前正在开发一个网络应用程序,它将根据许多不同的标准对街区进行评分,其中一个标准是来自当地加尔达警察局(爱尔兰警察局)的统计数据。我在Spring中将一个纬度和经度值从客户端传递到一个控制器,我想运行下面的SQL查询,以便找到最近的警察局并返回相关的统计数据Mysql 有没有一种方法可以在spring中将从客户端发送的值传递给sql查询的局部变量?,mysql,spring,spring-mvc,Mysql,Spring,Spring Mvc,我目前正在开发一个网络应用程序,它将根据许多不同的标准对街区进行评分,其中一个标准是来自当地加尔达警察局(爱尔兰警察局)的统计数据。我在Spring中将一个纬度和经度值从客户端传递到一个控制器,我想运行下面的SQL查询,以便找到最近的警察局并返回相关的统计数据 Set @lat = x; // Local Variable for a latitude value Set @lng = y; // Local Variable for a longitude value SELECT * FR
Set @lat = x; // Local Variable for a latitude value
Set @lng = y; // Local Variable for a longitude value
SELECT * FROM garda_station
ORDER BY ((garda_station_latitude - @lat)*
(garda_station_latitude - @lat))+
((garda_station_longitude - @lng)*
(garda_station_longitude - @lng))
ASC LIMIT 1;
我试图访问的garda_station表的结构如下
+-------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+--------------+------+-----+---------+----------------+
| garda_station_id | int(11) | NO | PRI | NULL | auto_increment |
| garda_station_latitude | double | NO | | NULL | |
| garda_station_longitude | double | NO | | NULL | |
| garda_station_name | varchar(255) | YES | | NULL | |
+-------------------------+--------------+------+-----+---------+----------------+
我通过AJAX请求将纬度和经度值从客户端传递给Spring项目中的控制器类
@RequestMapping(value = "/results", method = RequestMethod.POST)
public @ResponseBody
String Submit(@RequestParam("latitude") String latitude,@RequestParam("longitude") String longitude) {
// I'm printing them for now to ensure they have been sent from the client side
System.out.println(latitude + "" + longitude);
return "/";
}
这是我在spring项目中的第一次重大尝试,因此,如果有任何关于如何执行此SQL查询的其他建议,我很乐意听取您的建议。最简单的方法是使用JDBCTemplate(请参阅和)。但实际上,最好定义一个存储过程来计算Distance并使用该过程(请参见和)谢谢您的回复。您对通过Repository类使用JPA查询方法有何看法,类似这样,
public GardaStation findByGardaStation_latitude和dGardastation_Longitude(双纬度,双经度)代码>,如果可能的话,还可以对其进行自定义查询?这对我来说很好。最初您在没有JPA/Spring数据的情况下询问。这就是为什么我建议使用基于JDBCTemplate的方法。您的实际查询并不完美。最好使用更复杂的公式。在相反的情况下,结果精度很大程度上取决于纬度。抱歉,我应该指定我指的是JPA/Spring数据。你知道我可以看一个资源来帮助我创建一个基于SQL语句的定制JPA查询吗?检查一下,谢谢。谢谢你的帮助。