【hibernate】使用HQL对页面进行时间校验操作(预约)

预约系统中的时间校验

正好接了一个预约的需求,还需要用java 7和hibernate

1.时间冲突,时间段不能重复,在保存前对数据库进行

2.时间重复,同时录入多个,在保存前对页面进行

3.开始时间与结束时间正常顺序,在保存前对页面进行

应该还有一个对页面中的时间段重复进行提醒,但是太烦了,后面挑完电脑配置再写,到时候再说

4.时间段重复进行校验,在保存前对页面进行

没啥解释的,前端就是ajax接收,然后根据传回来的字符数值进行判断,主要操作放在了后端,代码多少带点儿烂,想哪儿写哪儿

public ActionForward 时间校验 (ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
A a = (A) form;
List<B> list-b = a.getlist-form();
JSONArray jsonArray = new JSONArray();
HashSet<B> set = new HashSet<>(list-b);
int sameInside = 0;
int sameError = 0;
for (int i = 0; i < list-b.size(); i++) {
HQLInfo info = new HQLInfo();
info.setWhereBlock("test. Id = :testId " + "and NOT(EndTime <= :StartTime "
+ "or StartTime >= :EndTime)");
String testString = list-b.get(i).gettestId().toString();
info.setParameter("testId", testString);
String StartTimeString = list-b.get(i).get StartTime().toString();
Date StartTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse( StartTimeString.toString());
info.setParameter(" StartTime", StartTimeDate);
String EndTimeString = list-b.get(i).get EndTime().toString();
Date EndTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse( EndTimeString.toString());
info.setParameter(" EndTime", EndTimeDate);
// date1小于date2返回-1,date1大于date2返回1,相等返回0
int compareTo = StartTimeDate.compareTo( EndTimeDate);
if (i >= 1) {
for (int j = 0; j < i; j++) {
String StartTimeStringInside = list-b.get(j).get StartTime().toString();
Date StartTimeDateInside = new SimpleDateFormat("yyyy-MM-dd HH:mm")
.parse( StartTimeStringInside.toString());
String EndTimeStringInside = list-b.get(j).get EndTime().toString();
Date EndTimeDateInside = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse( EndTimeStringInside
.toString());
// Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;
// 即Date2比Date1小的true/false,当Date2日期比Date1小的时候为true,否则为false
// Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;
// a为比较的基底时间,b为其余比较时间,a结束>b开始 或者 a开始<b结束的结果取反就是有冲突的部分
boolean beforeTime = EndTimeDateInside.before( StartTimeDate);
boolean afterTime = StartTimeDateInside.after( EndTimeDate);
String InsideString = list-b.get(j).gettestId().toString();
if ( testString.equals( InsideString)) {
if (!(afterTime || beforeTime)) {
sameInside = 1;
} else {
sameInside = 0;
}
} else {
sameInside = 0;
}
sameError = sameInside + sameError;
}
}
List< Bb> bb = BbService.findList(info);
JSONObject object = new JSONObject();
/*检查数据库与数据中的时间段冲突*/
if (list-b == null || applications.size() == 0) {
object.put("col", i + 1);
object.put("ok", 0);
} else {
object.put("col", i + 1);
object.put("ok", 1);
}
/*检查页面中数据中的时间是否重复*/
if (list-b.size() == set.size()) {
object.put("repeat", 0);
} else {
object.put("repeat", 1);
}
/*检查页面中的开始时间是否在结束时间之前*/
if (compareTo == 1) {
object.put("timesOrder", 1);
} else {
object.put("timesOrder", 0);
}
/*检查页面中数据是否重复*/
if (sameError == 0) {
object.put("sameInside", 1);
} else {
object.put("sameInside", 0);
}
jsonArray.add(object);
}
response.setCharacterEncoding("UTF-8");
response.getWriter().write(jsonArray.toString());
response.getWriter().flush();
response.getWriter().close();
return null;
}

阿巴阿巴,以上

【hibernate】使用HQL对页面进行时间校验操作(预约)的更多相关文章

  1. Web页面长时间无操作后再获取焦点时转到登录界面

    今天开始讲新浪博客搬到博客园.        在工作中遇到的小问题,感觉有点意思,就记录下来吧!        该问题分为两种情况,一.Web页面长时间无操作后,在对其进行操作,比如点击“首页”.“设 ...

  2. web页面长时间未操作自动退出登录

    var lastTime = new Date().getTime(); var currentTime = new Date().getTime(); * * ; //设置超时时间: 10分 $(f ...

  3. vue项目前端限制页面长时间未操作超时退出到登录页

    之前项目超时判断是后台根据token判断的,这样判断需要请求接口才能得到返回结果,这样就出现页面没有接口请求时还可以点击,有接口请求时才会退出 现在需要做到的效果是:页面超过30分钟未操作时,无论点击 ...

  4. Hibernate中HQL函数汇总及获取当前时间进行比较举例

    在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hiberna ...

  5. Hibernate五 HQL查询

    HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条 ...

  6. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. Java_Web三大框架之Hibernate+jsp+HQL分页查询

    分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...

  8. hibernate的hql查询

    1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...

  9. Hibernate学习-Hibernate查询语言HQL

    HQL(Hibernate Query Language)Hibernate查询语言,语法类似于SQL,可以直接使用实体类及属性. 使用HQL 可以避免使用JDBC 查询的一些弊端 不需要再编写繁复的 ...

  10. Hibernate之HQL查询

    一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...

随机推荐

  1. python中数字和字符串和bytes的相互转换实例解析

    一 数字和字符串的相互转换 # int convert string str(12345)) #string convert int int('12345') 二 数字和bytes的相互转换 1.数字 ...

  2. Android 线性布局平分宽度item的隐藏问题

    原文:Android 线性布局平分宽度item的隐藏问题 - Stars-One的杂货小窝 一直只使用layout_weight来平分布局,但是如果隐藏了某个item,会导致其他item宽高有所变化 ...

  3. CAST电子部单片机方向授课——串口通信 预习文档

    CAST电子部单片机方向授课--串口通信 预习文档 课前小准备 安装串口调试助手 第一步:进入Microsoft Store 第二步:在Microsoft Store中搜索 "串口调试助手& ...

  4. MySQL(视图、事务、存储过程、函数、流程控制、索引)

    一 视图(了解) 什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用 为什么要用视图 如果要频繁的操作一张虚拟表(拼表组成的),你就可以制作成视图,后续直接操作 视图其实也是一 ...

  5. java基础的项目

    334,零钱通 思路: (1) 先完成显示菜单,并可以选择菜单,给出对应提示 (2) 完成零钱通明细,简单的话可以使用String拼接 (3)完成收益入账   完成功能驱动程序员增加新的变化和代码 ( ...

  6. base64格式上传图片后台写入

    前台 var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e){//回调 } 后台 ...

  7. FPGA中的面积优化

    FPGA中的面积优化 一.优化的意义 面积优化,就是在实现预定功能的情况下,使用更小的面积.通过优化,可以使设计能够运行在资源较少的平台上,节约成本,也可以为其他设计提供面积资源. 二.操作符平衡 对 ...

  8. date_histogram,es按照时间分组统计

    日期直方图聚合(date_histogram) 与histogram相似,es中内部将日期表示为一个long值,所以有时候可以用histogram来达到相同的目的,但往往没有date_histogra ...

  9. Kingbase ES 自定义聚合函数浅析

    文章概要: 基于前面的博文<Kingbase ES 自定义聚合函数和一次改写案例>这篇文章,我们只考虑了自定义聚合函数非并行的情况, 因此,本篇文章将着重解析一下使用PLPGSQL编写并行 ...

  10. 【已解决】同时使用ajax和form表单传数据的冲突问题

    昨天踩了一个大坑,下面总结一下: 前后端数据交互的两种方式: 1.ajax发起请求(请求中可以带有数据)并获取返回的数据 下面给出一个ajax的常见格式: 1 $.ajax({ 2 url:" ...