【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. ubuntu环境下python下使用OpenCV库读取USB摄像头的画面

    一 概念 OpenCV是一个开源的计算机视觉和机器学习软件库.它可以使用pip命令行中的以下命令安装:"pip install opencv-python" 这个做视觉处理,非常的 ...

  2. AAC音频编码之--概念介绍

    一 概念 AAC,全称Advanced Audio Coding,是一种专为声音数据设计的文件压缩格式.与MP3不同,它采用了全新的算法进行编码,更加高效,具有更高的"性价比".利 ...

  3. linux shell 字体颜色设置

    使用 echo -e "\033[0;32;40m" 可以将字体设置成绿色. 这里必须使用echo 的选项 "-e",因为后面需要用到转义序列. 转义序列就是一 ...

  4. Android JNI静态和动态注册 、Java Reflect(C或C++层反射和JAVA层反射)、Java 可变参数(JNI实现)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  5. PAT 甲级【1007 Maximum Subsequence Sum】

    本题是考察动态规划与java的快速输入: max[i]表示第i个结尾的最大的连续子串和.b begin[i]表示第[begin[i],i]为最大和的开始位置 超时代码: import java.io. ...

  6. 记录--两行CSS让页面提升了近7倍渲染性能

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态.如果页面加载 ...

  7. MindSponge分子动力学模拟——自建力场(2024.03)

    技术背景 在MindSponge教程合集中我们已经介绍了很多使用MindSponge进行分子动力学模拟的方法,这里主要介绍在MindSponge中自定义一个力场.在传统的MD软件中,如果你希望去开发一 ...

  8. C# 中文文字识别OCR

    效果 完整Demo下载https://download.csdn.net/download/lw112190/81743333 1. Vs2017打开OcrLiteOnnxCs.sln. 2. 解决方 ...

  9. Oracle 关闭 DBLink

    alter system set open_links=0 sid ='*' scope=spfile; System altered. alter system set open_links_per ...

  10. proteus的C51仿真

    Proteus的C51仿真 1.实验原理 Proteus是对C51仿真效果比较好的软件了,可以利用丰富的数字资源的外设实现比较接近实际的设计.仿真方法也比较简单,不需要下载,只需要将仿真文件导出到器件 ...