后端sql和前端http访问

本文详细介绍了如何通过后端SQL查询与前端HTTP请求进行数据交互,包括三种不同的查询方法:按条件查询、按范围查询以及按ID查询。在定时获取船舶数据时,通过调整时间戳或ID来获取不同时间段的数据。此外,还讨论了如何根据航道划分筛选船舶数据,并涉及气象、报警、动态、通知和水文等多个方面的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定时获取所有船舶数据

由于数据库船舶数据是模拟的,按200条船,每2s时间间隔一条数据,所以每一次取数是200条
辨别的字段名为:uuid(自增),datatime(mysql中为Datatime格式,后端实体转String),
采用uuid容易识别。
tableship是船舶表名,

方法一:

findByCondition是URI方法名,参数是字段名fieldName,String格式、值value
字段名fieldName,可以查询数据表中任意字段名

			/**
			 * 按条件查询		 select * from tableship WHERE fieldName=value
			 * @param fieldName  代表字段名(Model中的成员变量,Tableship) 必须是String格式的
			 * @param value      可以不是唯一的(返回多个List)
			 */
			@PostMapping("/findByCondition")
			public Result findByCondition(@RequestParam String fieldName, @RequestParam Object value) {

					Condition condition = new Condition(Tableship.class);
					Example.Criteria criteria = condition.createCriteria();
					criteria.orEqualTo(fieldName, value);
					
					List<Tableship> list = tableshipService.findByCondition(condition);
				return ResultGenerator.genSuccessResult(list);
			}

客户端请求:

第一个时间点:http://localhost:8080/tableship/findByCondition HTTP method:Post
RequestParam: fieldName=datatime value=2019-06-27 16:50:52

第二个时间点: RequestParam: fieldName=datatime value=2019-06-27 16:50:54
(按2s增加时间值)

方法二:

findByBetween 查询值1到值2之间的数据

		/**
		 * 条件查询Between :where fieldName between value1 and value2
		 * @param fieldName 代表字段名(Model中的成员变量,Tableship)
		 * @param value1    在1 和 2 之间
		 * @param value2
		 * @return          List
		 */
		@PostMapping("/findByBetween")
		public Result findByBetween(@RequestParam String fieldName, @RequestParam Object value1,@RequestParam Object value2) {

			Condition condition = new Condition(Tableship.class);
			Example.Criteria criteria = condition.createCriteria();
			criteria.andBetween(fieldName,value1,value2);

			List<Tableship> list = tableshipService.findByCondition(condition);
			return ResultGenerator.genSuccessResult(list);
		}
				
		客户端请求:
		
			第一个时间点:http://localhost:8080/tableship/findByBetween   HTTP method:Post  
							RequestParam: fieldName=uuid  value1=1 value2=200

			第二个时间点:		RequestParam: fieldName=uuid  value1=201 value2=400	
			(200增加id值)

方法三(不太好用):

findByIds是URI方法名,参数是id,String格式

/**
			 * 查询按Ids 多条返回
			 * @param ids   例如 ids=1,2,3,4,5   String格式
			 * @return      多条返回
			 */
			@PostMapping("/findByIds")
			public Result findByIds(@RequestParam String ids) {
				List<Tableship> list = tableshipService.findByIds(ids);
				return ResultGenerator.genSuccessResult(list);
			}

客户端请求:
uuid在该方法内部是@Id注释的,所以参数是ids。

第一个时间点:http://localhost:8080/tableship/findByIds HTTP method:Post
RequestParam: ids=1,2,3,4,5,…,200
第二个时间点: RequestParam: ids=201,202,203,204,205,…,400
(按200增加id数)

二、定时获取周边船舶数据

按照‘航道划分’,数据库表字段名=Channel_division_ID,后端实体成员变量=channelDivisionId,
由于提取时间不同,对应数据记录不同,避免时间因素的方法是
在客户端定时获取所有船舶之后,筛选出‘航道划分’等于 客户端自身航道划分的数据记录

方法二:

findByConditionBetween 多条件查询:客户端请求中带参数,航道划分(客户端所在航道划分),和uuid (或者时间)如下查询

  /**
     * 按条件查询(例如:航道划分=10010,uuid在1~200之间)	sql: select * from tableship where fieldName=value and fieldName1 between value1 and value2
     * @param fieldName       fieldName=value ->  channelDivisionId=10010
     * @param value           	fieldName=channelDivisionId ,  value=10010
     * @param fieldName1      fieldName1 between value1 and value2 ->  uuid between 1 and 200
     * @param value1          	fieldName1=uuid , value1=1, value2=200
     * @param value2
     * @return                查询到的所有船记录 List
     */
    @PostMapping("/findByConditionBetween")
    public Result findByConditionBetween(@RequestParam String fieldName, @RequestParam Object value,
                                   @RequestParam String fieldName1, @RequestParam Object value1,@RequestParam Object value2) {

        Condition condition = new Condition(Tableship.class);
        Example.Criteria criteria = condition.createCriteria();
        criteria.orEqualTo(fieldName, value);
        criteria.andBetween(fieldName1, value1,value2);
        List<Tableship> list = tableshipService.findByCondition(condition);
        return ResultGenerator.genSuccessResult(list);
    }

客户端:

	第一个时间点:http://localhost:8080//tableship/findByConditionBetween   HTTP method:Post  
					RequestParam: 
								fieldName=channelDivisionId  value=10010
								fieldName1=uuid  value1=1 value2=200
								
								
	第二个时间点:		
					RequestParam: 
								fieldName=channelDivisionId  value=10010
								fieldName1=uuid  value1=201 value2=400		
	(按200增加id数)(或者时间)

方法三:

findByCondition2 2个条件查询,2个变量 客户端传入请求:当前航道划分、时间

		/**
     * 按2个条件查询  (例如:航道划分=10010,时间=2019-06-27 16:50:50)
     *      * sql: select * from tableship where fieldName=value and fieldName1=value2
     * @param fieldName     字段名1 fieldName=channelDivisionId ,  value=10010
     * @param value
     * @param fieldName1    字段名2 fieldName1=datatime, value2=2019-06-27 16:50:50
     * @param value1
     * @return
     */
    @PostMapping("/findByCondition2")
    public Result findByCondition2(@RequestParam String fieldName, @RequestParam Object value,
                                         @RequestParam String fieldName1, @RequestParam Object value1) {

        Condition condition = new Condition(Tableship.class);
        Example.Criteria criteria = condition.createCriteria();
        criteria.andEqualTo(fieldName, value);
        criteria.andEqualTo(fieldName1, value1);
        List<Tableship> list = tableshipService.findByCondition(condition);
        return ResultGenerator.genSuccessResult(list);
    }
	客户端:
	
	第一个时间点:http://localhost:8080//tableship/findByCondition2   HTTP method:Post  
					RequestParam: 
								fieldName=channelDivisionId  value=10010
								fieldName1=datatime  value1=2019-06-27 16:50:50
								
								
	第二个时间点:		
					RequestParam: 
								fieldName=channelDivisionId  value=10010
								fieldName1=datatime  value1=2019-06-27 16:50:50		
	(锚定时间)

三、气象

四、报警

五、动态

六、通知

七、水文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值