【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 ...
随机推荐
- github git clone下载加速 && npm install 下载加速
git clone https://pd.zwc365.com/seturl/< https 开头的项目地址> npm install --registry=https://registr ...
- SecureCRT windows 登录 linux
SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.SecureCRT支持SSH,同时支持Telnet和rlog ...
- idea的使用操作
怎么让idea中的方法之间显示横线 点击setting 选择Editor 选择Appearance 选择Show method separators 效果: 如果设置idea的标签页可以多行显示 点击 ...
- 20_使用SDL显示BMP图片
文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的<显示YUV图片>做准备. 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来 ...
- 业务开发做到零 bug 有多难?
大家好,我是树哥,好久不见啦. 作为一个工作了 10 多年的开发,写业务代码总是写了不少的.但你想过做到零 bug 吗?我可是想过的,毕竟我还是有点追求的.不然每天都是浑浑噩噩地过,多没意思啊. 大概 ...
- 【Leetcode】63. 不同路径 II
题目(链接) 一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 "Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 ...
- 记录--手把手教你,用electron实现截图软件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 因为我们日常开发项目的时候,需要和同事对接api和文档还有UI图,所以有时候要同时打开多个窗口,并在多个窗口中切换,来选择自己要的信 ...
- torch的cuda版本安装
1.拥有英伟达显卡NVIDIA NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本) 以下是从NVIDIA官网转过来的链接,方便需要下载各种版本CUDA的同学.(借阅) http ...
- ios应用免签+微信分身
一句话概括:用TrollStore自动加签安装微信ipa文件,实现ios上微信应用分身. 工具: 1. ios14.1 2. GTA Car Tracher 这个应用程序并不是真正的 GTA Car ...
- C#无需第三方插件实现json和table互转
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using S ...