热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

4.30工作项目笔记

4.30工作项目笔记前言过程数据库模糊查询以及分页列表servicecontroller发生的问题涉及到的demo总结解决办法不说了今天的任务前言项目需求:后面根据

4.30工作项目笔记

  • 前言
  • 过程
    • 数据库
    • 模糊查询以及分页列表
      • service
      • controller
    • 发生的问题
    • 涉及到的demo
  • 总结
    • 解决办法



不说了

今天的任务
前言

项目需求:
在这里插入图片描述
后面根据登录session的行业id来显示对应的心跳统计数据

就是加where子查询啦
页面实现:

在这里插入图片描述
最后效果:
在这里插入图片描述

过程

数据库

在这里插入图片描述

-------心跳统计-相关sql----------
–查询全部
SELECT dht_id, dht01, dht02, dht03, dht04, dht05, dht06, dht07 FROM dtm_heart_tongji;

–分页查询总条数
SELECT count(1) from dtm_heart_tongji where 1=1

–oracle查询时间段
Select * from dtm_heart_tongji where dht05 between to_date(‘2020-3-10’, ‘yyyy-mm-dd’) and to_date(‘2020-4-15’,‘yyyy-mm-dd’)

在这里插入图片描述

模糊查询以及分页列表


service

在这里插入图片描述在这里插入图片描述

controller

在这里插入图片描述
**注意:**分页的这里总页数前台默认页数给了1
我们思考下为什么?
在这里插入图片描述
在这里插入图片描述service发现这里查询条数的时候做了处理
在这里插入图片描述

strTable = strTable + "" + formatDate(new Date((data.listDtmHeartTongJiFind[i].dht05).replace(/-/g, "/"))) + "";

发生的问题

在这里插入图片描述

涉及到的demo

jsp


<%&#64; page language&#61;"java" pageEncoding&#61;"UTF-8"%>
<%&#64;taglib prefix&#61;"c" uri&#61;"http://java.sun.com/jsp/jstl/core"%>
<%&#64; taglib prefix&#61;"fn" uri&#61;"http://java.sun.com/jsp/jstl/functions"%>











开始时间&#xff1a;
结束时间&#xff1a;



TongJiJsonService

package svs.service;import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import svs.dao.ISearchDao;
import svs.dao.IUserSearchDao;
import svs.dto.DtmHeartTongji;
import svs.dto.userDto.UserDtmHeartTongji;
import svs.dto.userDto.UserDtmNeiBaoUser;/*** 心跳统计* * &#64;author aolanjie01**/
&#64;Service("TongJiJsonService")
public class TongJiJsonService {&#64;Resourceprivate IUserSearchDao objUserSearchDao;&#64;Resourceprivate ISearchDao objSearchDao;&#64;Resourceprivate CommonJsonService objCommonJsonService;/*** 心跳统计 分页查询list* * &#64;param startDate 开始时间* &#64;param endDate 结束时间* &#64;param intPageNum 页数* &#64;param intCpage 当前页* &#64;return*/public List selectUserDtmHeartTongjiInfoSearch(String dht05Start, String dht05End,int intPageNum, int intCpage, String dnu08) {try {String strSql &#61; SqlConstant.sqlUserHeartTongJiSearch;// 行业IDif (dnu08 !&#61; null && "".equals(dnu08) &#61;&#61; false) {// 用户角色idstrSql &#61; strSql &#43; " and dht01&#61;" &#43; dnu08 &#43; "";}// 开始时间if (dht05Start !&#61; null && "".equals(dht05Start) &#61;&#61; false) {strSql &#61; strSql &#43; " and dht05 >&#61;&#39;" &#43; dht05Start &#43; " 00:00:00&#39;";}// 结束时间if (dht05End !&#61; null && "".equals(dht05End) &#61;&#61; false) {strSql &#61; strSql &#43; " and dht05 <&#61;&#39;" &#43; dht05End &#43; " 23:59:59&#39;";}strSql &#61; strSql &#43; " limit " &#43; intPageNum &#43; " offset " &#43; (intCpage - 1) * intPageNum;return objUserSearchDao.selectUserDtmHeartTongjiSearch(strSql);} catch (Exception e) {// TODO: handle exceptionreturn null;}}/*** 心跳统计 分页 查询条数* * &#64;param startDate 开始时间* &#64;param endDate 结束时间* &#64;param totalNum* &#64;return*/public int HeartTongjiSearchCount(String dht05Start, String dht05End, String totalNum, String dnu08) {try {int intTotalNum &#61; Integer.valueOf(totalNum);if (intTotalNum > 0) {return intTotalNum;} else {String strSql &#61; "SELECT count(1) from dtm_heart_tongji where 1&#61;1";// 开始时间if (dnu08 !&#61; null && "".equals(dnu08) &#61;&#61; false) {if (dht05Start !&#61; null && "".equals(dht05Start) &#61;&#61; false && dht05End !&#61; null&& "".equals(dht05End) &#61;&#61; false) {strSql &#61; strSql &#43; " and dht05 between to_date(&#39;" &#43; dht05Start &#43; "&#39;, &#39;yyyy-mm-dd&#39;) and to_date(&#39;"&#43; dht05End &#43; "&#39;,&#39;yyyy-mm-dd&#39;) and dht01&#61;" &#43; dnu08 &#43; "";}}return objSearchDao.selectCountList(strSql);}} catch (Exception e) {// TODO: handle exceptionreturn -1;}}
}

TongJiController&#xff1a;做页面跳转

package svs.controller;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import svs.service.CommonJsonService;&#64;Controller
public class TongJiController {&#64;Resourceprivate CommonJsonService objCommonJsonService;/*** 心跳统计初始化* * &#64;return*/&#64;RequestMapping("/heartTongjiIndex")public String heartTongjiIndex(HttpSession session,HttpServletRequest request,Model model){ try {//判断Session是否失效if (!objCommonJsonService.SystemBool(session)) {request.setAttribute("strErrorMsg", "Session失效,请重新登录!");return "communitySessionError";}return "tongji/heartTongji";} catch (Exception e) {e.printStackTrace();return "communitySessionError";}}/*** 事件统计初始化* * &#64;return*/&#64;RequestMapping("/eventTongjiIndex")public String eventTongjiIndex(HttpSession session,HttpServletRequest request,Model model){ try {//判断Session是否失效if (!objCommonJsonService.SystemBool(session)) {request.setAttribute("strErrorMsg", "Session失效,请重新登录!");return "communitySessionError";}return "tongji/eventTongji";} catch (Exception e) {e.printStackTrace();return "communitySessionError";}}
}

TongJiJsonController&#xff1a;主要业务处理逻辑

package svs.controller;import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import svs.dao.ISearchDao;
import svs.dto.DtmHeartTongji;
import svs.dto.DtmSvssystemLog;
import svs.dto.userDto.UserDtmHeartTongji;
import svs.service.CommonJsonService;
import svs.service.TongJiJsonService;&#64;Controller
public class TongJiJsonController {&#64;Resourceprivate ISearchDao objSearchDao;&#64;Resourceprivate CommonJsonService objCommonJsonService;&#64;Resourceprivate TongJiJsonService objTongjiJsonService;// 每页数量private int intPageNum;// 总记录数private int intAllCount;// 当前页private int intCpage;private String jsonMsg;private int jsonFlag;/*** 心跳统计查询* * &#64;param session* &#64;param request* &#64;param model* &#64;return*/&#64;RequestMapping("/heartTongJiIndexJsonAciton")&#64;ResponseBodypublic Map heartTongJiIndexJsonAciton(HttpSession session, HttpServletRequest request) {Map mpList &#61; new HashMap();// 判断Session是否失效if (!objCommonJsonService.SystemBool(session)) {mpList.put("jsonFlag", -2);mpList.put("jsonMsg", "Session失效,请重新登录!");return mpList;}try {// 创建应用系统日志对象,并且已经填写好了一些通用参数// DtmSvssystemLog objDtmSvssystemLog &#61;// objCommonJsonService.createNewDtmSvssystemLog(session, request);// 用户角色String dnu08 &#61; session.getAttribute("dnu08").toString();// 开始时间String dht05Start &#61; request.getParameter("dht05Start");// 结束时间String dht05End &#61; request.getParameter("dht05End");// 当前页intCpage &#61; Integer.valueOf(request.getParameter("Cpage"));// 总数据量String totalNum &#61; request.getParameter("totalNum");List listUserDtmHeartTongjiInfoSearch &#61; objTongjiJsonService.selectUserDtmHeartTongjiInfoSearch(dht05Start, dht05End, intPageNum, intCpage,dnu08);// 心跳数据条数intAllCount &#61; objTongjiJsonService.HeartTongjiSearchCount(dht05Start, dht05End, totalNum,dnu08);// 每页数据量intPageNum &#61; objCommonJsonService.PAGE_COUNT;mpList.put("listDtmHeartTongJiFind", listUserDtmHeartTongjiInfoSearch);mpList.put("intAllCount", intAllCount);mpList.put("intPageNum", intPageNum);mpList.put("jsonFlag", 1);mpList.put("strMsg", "成功");return mpList;} catch (Exception e) {e.printStackTrace();mpList.put("jsonFlag", -1);return mpList;}}}

package svs.dto.userDto;import java.util.Date;public class UserDtmHeartTongji {/*** This field was generated by MyBatis Generator. This field corresponds to the database column public.dtm_heart_tongji.dht_id* &#64;mbg.generated Wed Apr 29 15:10:03 CST 2020*/private Integer dhtId;/*** This field was generated by MyBatis Generator. This field corresponds to the database column public.dtm_heart_tongji.dht02* &#64;mbg.generated Wed Apr 29 15:10:03 CST 2020*/private Integer dht02;/*** This field was generated by MyBatis Generator. This field corresponds to the database column public.dtm_heart_tongji.dht03* &#64;mbg.generated Wed Apr 29 15:10:03 CST 2020*/private Integer dht03;/*** This field was generated by MyBatis Generator. This field corresponds to the database column public.dtm_heart_tongji.dht04* &#64;mbg.generated Wed Apr 29 15:10:03 CST 2020*/private Integer dht04;/*** This field was generated by MyBatis Generator. This field corresponds to the database column public.dtm_heart_tongji.dht05* &#64;mbg.generated Wed Apr 29 15:10:03 CST 2020*/private String dht05;public Integer getDhtId() {return dhtId;}public void setDhtId(Integer dhtId) {this.dhtId &#61; dhtId;}public Integer getDht02() {return dht02;}public void setDht02(Integer dht02) {this.dht02 &#61; dht02;}public Integer getDht03() {return dht03;}public void setDht03(Integer dht03) {this.dht03 &#61; dht03;}public Integer getDht04() {return dht04;}public void setDht04(Integer dht04) {this.dht04 &#61; dht04;}public String getDht05() {return dht05;}public void setDht05(String dht05) {this.dht05 &#61; dht05;}
}

package svs.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import svs.dto.userDto.*;public interface IUserSearchDao {//派出所权限public List selectUserDtmNeibaouserPolice(&#64;Param(value&#61;"value") String strSql) throws Exception;//菜单权限public List selectUserDtmSystemMenu(&#64;Param(value&#61;"value") String strSql) throws Exception;//内保用户权限public List selectUserDtmNeiBaoUser(&#64;Param(value&#61;"value") String strSql) throws Exception;//单位信息public List selectUserDtmUsecompanyInfo(&#64;Param(value&#61;"value") String strSql) throws Exception;//派出所public List selectUserDictionaryPoliceStation(&#64;Param(value&#61;"value") String strSql) throws Exception;//用户列表public List selectUserDtmNeiBaoUserSearch(&#64;Param(value&#61;"value") String strSql) throws Exception;//单位信息public List selectUserDtmUsecompanyInfoSearch(&#64;Param(value&#61;"value") String strSql) throws Exception;//小区信息public List selectUserDtmCommunity(&#64;Param(value&#61;"value") String strSql) throws Exception;//实有装备信息public List selectUserDtmCommunityEquipment(&#64;Param(value&#61;"value") String strSql) throws Exception;//实有力量信息public List selectUserDtmCommunityPower(&#64;Param(value&#61;"value") String strSql) throws Exception;//人员信息列表public List selectUserDtmPersonInfoSearch(&#64;Param(value&#61;"value") String strSql) throws Exception;//人员信息public List selectUserDtmPersonInfo(&#64;Param(value&#61;"value") String strSql) throws Exception;//人员标签信息public List selectUserDtmPersonLabelSearch(&#64;Param(value&#61;"value") String strSql) throws Exception;//区域出入口信息表public List selectUserDtmCommunityEntrance(&#64;Param(value&#61;"value") String strSql) throws Exception;//系统输入信息表&#xff08;设备信息&#xff09;public List selectUserAgentSystemEnterSearch(&#64;Param(value&#61;"value") String strSql) throws Exception; //用户心跳信息表public List selectUserDtmHeartTongjiSearch(&#64;Param(value&#61;"value") String strSql) throws Exception; }

在这里插入图片描述

总结

1.js时间戳的问题
后台的实体类的用string来接收就无需转换
2.时间范围的问题
我的这种写法就有问题
在这里插入图片描述
举例&#xff1a;假如我可能用户只想按开始时间&#xff08;结束时间&#xff09;搜索&#xff0c;那么我这个逻辑&#xff0c;啥数据就没有

在这里插入图片描述

不&#xff1a;其实它是在查询全部

这是一个bug
在这里插入图片描述

注意&#xff1a;前台的数据得是动态的
在这里插入图片描述

解决办法

提高逻辑思维

这种写法灵活且通用

// 行业IDif (dnu08 !&#61; null && "".equals(dnu08) &#61;&#61; false) {// 用户角色idstrSql &#61; strSql &#43; " and dht01&#61;" &#43; dnu08 &#43; "";}// 开始时间if (dht05Start !&#61; null && "".equals(dht05Start) &#61;&#61; false) {strSql &#61; strSql &#43; " and dht05 >&#61;&#39;" &#43; dht05Start &#43; " 00:00:00&#39;";}// 结束时间if (dht05End !&#61; null && "".equals(dht05End) &#61;&#61; false) {strSql &#61; strSql &#43; " and dht05 <&#61;&#39;" &#43; dht05End &#43; " 23:59:59&#39;";}

在这里插入图片描述


推荐阅读
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
author-avatar
Carol卍_932
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有