【hibernate】使用HQL对页面进行时间校验操作(预约)
【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对页面进行时间校验操作(预约)的更多相关文章
- Web页面长时间无操作后再获取焦点时转到登录界面
今天开始讲新浪博客搬到博客园. 在工作中遇到的小问题,感觉有点意思,就记录下来吧! 该问题分为两种情况,一.Web页面长时间无操作后,在对其进行操作,比如点击“首页”.“设 ...
- web页面长时间未操作自动退出登录
var lastTime = new Date().getTime(); var currentTime = new Date().getTime(); * * ; //设置超时时间: 10分 $(f ...
- vue项目前端限制页面长时间未操作超时退出到登录页
之前项目超时判断是后台根据token判断的,这样判断需要请求接口才能得到返回结果,这样就出现页面没有接口请求时还可以点击,有接口请求时才会退出 现在需要做到的效果是:页面超过30分钟未操作时,无论点击 ...
- Hibernate中HQL函数汇总及获取当前时间进行比较举例
在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hiberna ...
- Hibernate五 HQL查询
HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条 ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
- Hibernate学习-Hibernate查询语言HQL
HQL(Hibernate Query Language)Hibernate查询语言,语法类似于SQL,可以直接使用实体类及属性. 使用HQL 可以避免使用JDBC 查询的一些弊端 不需要再编写繁复的 ...
- Hibernate之HQL查询
一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...
随机推荐
- "高绩效"指南
前言 最近被问到一个问题,在工作中,如何拿高绩效.或者换一种表达方式,如何成为老板的"嫡系". 在这里我想简单谈一谈我的想法,可能不准确,各位看官,当饭后茶语罢了. 为了更加有说服 ...
- 关于全景(360)图片拼接的方法(Opencv3.0 Stitcher)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Android JNI静态和动态注册 、Java Reflect(C或C++层反射和JAVA层反射)、Java 可变参数(JNI实现)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Ubuntu 14.04 升级到Gnome3.12z的折腾之旅(警示后来者)+推荐Extensions.-------(一)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-12-19 22:40:20 ...
- Java反序列化学习
前言 早知前路多艰辛,仙尊悔而我不悔.Java反序列化,免费一位,开始品鉴,学了这么久web,还没深入研究Java安全,人生一大罪过.诸君,请看. 序列化与反序列化 简单demo: import ja ...
- [Raspberry Pi]树莓派多线程下串口收发数据
[Raspberry Pi]树莓派多线程下串口收发数据 鼠鼠用的是python开发树莓派,因为python是最优美的语言! 少废话,直接上代码: import threading import ser ...
- QGIS中下载遥感影像的Python代码片段
1. 引言 QGIS是开源免费且好用的GIS软件,并且可以使用Python脚本来控制 这里主要使用的打开QGIS时启动内置的Python解释器,这个Python解释器可以访问iface接口从而实现对Q ...
- 记录--对于$off,Exclude 和 Extract的一点理解
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.typescript 高阶类型 Exclude 和 Extract Exclude<T, U> TypeScript 2. ...
- 第145篇:js设计模式注册模式及相应实践
好家伙, 0.索引 在阿里的低开项目中,使用这种形式去注册组件,我不禁好奇,这到底是个什么玩意 1.概念 在 JavaScript 中,注册模式(Registry Pattern)是一种设计模式 ...
- KingbaseES 原生XML系列四--XML通用函数
KingbaseES 原生XML系列四--XML通用函数(XMLAGG,XMLCOMMENT,XMLCONCAT,XMLELEMENT,XMLFOREST,XMLPI,XMLROOT,XMLSEQUE ...