Hibernate SQLQuery简单实用,做链接查询
工单里面可能有0个告警,一个或多个告警,当工单中没有告警的时候也需要将工单显示出来,所以就需要使用工单和告警的做链接查询,下面是具体实例
表:
CREATE TABLE `alarm` ( `id` bigint() NOT NULL DEFAULT ', `title` varchar() DEFAULT NULL, `level` ) DEFAULT NULL, `customer_id` bigint() DEFAULT NULL, `work_sheet_id` bigint() DEFAULT NULL, PRIMARY KEY (`id`), KEY `work_sheet_id` (`work_sheet_id`), CONSTRAINT `alarm_ibfk_1` FOREIGN KEY (`work_sheet_id`) REFERENCES `alarm` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `worksheet` ( `id` bigint() NOT NULL DEFAULT ', `serialNo` varchar() DEFAULT NULL, `seatId` bigint() DEFAULT NULL, `device_id` bigint() DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into alarm values(,'); insert into alarm values(,'); insert into alarm values(,'); insert into alarm values(,'); insert into alarm values(,'); insert into alarm values(,'); insert into worksheet values(,,); insert into worksheet values(,,); insert into worksheet values(,,); insert into worksheet values(,,); insert into worksheet values(,,); insert into worksheet values(,,);
存放SQL文件的接口
package com.h3c.zgc;
public interface SQL {
public static final String SELECT_WORKSHEET_LEFT_JOIN_ALARM = "select w.serialNo workSheetSerialNo,a.title title,a.level level,a.id alarmId from worksheet w left join alarm a on w.id=a.work_sheet_id where w.id=?";
}
dao层:将连接查询的数据转换成map对象放入list中
package com.h3c.zgc;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.h3c.zgc.alarm.WorkSheet;
@Repository
public class WorkSheetDao extends HibernateDaoSupport {
@Resource
private void set(SessionFactory sessionFactory) {
this.setSessionFactory(sessionFactory);
}
public List getWorkSheets(Long worksheetId) {
SQLQuery sqlQuery = this
.getSessionFactory()
.openSession()
.createSQLQuery(
SQL.SELECT_WORKSHEET_LEFT_JOIN_ALARM);
sqlQuery.setParameter(, worksheetId);
sqlQuery.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return sqlQuery.list();
}
public WorkSheet getWorkSheet() {
SQLQuery sqlQuery = this.getSessionFactory().openSession()
.createSQLQuery("select* from worksheet where id=1")
.addEntity(WorkSheet.class);
List<WorkSheet> list = sqlQuery.list();
);
}
}
service层:
package com.h3c.zgc;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@Service
public class WorkSheetService {
@Resource
private WorkSheetDao workSheetDao;
public Map<String, Object> getWorkSheet(Long worksheetId){
);
}
}
controller层
package com.h3c.zgc;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WorkSheetController {
@Resource
private WorkSheetService workSheetService;
@RequestMapping("getArr")
public String toGetArr(Long workSheetId,HttpServletRequest request){
Map<String, Object> o = this.workSheetService.getWorkSheet(workSheetId);
System.out.println(o.get("alarmId")==null);
if(o.get("alarmId")==null){
o.put();
}
request.setAttribute("obj",o);
return "test/getWorkSheet";
}
}
在页面中获取数据
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${obj['workSheetSerialNo'] } ,${obj['alarmId'] },${obj['title'] },${obj['level'] }
<c:if test="${obj['alarmId']==0 }">告警不存在</c:if>
</body>
</html>
Hibernate SQLQuery简单实用,做链接查询的更多相关文章
- java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)
1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...
- Hibernate - SQLQuery
使用SQLQuery 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 标量查询 ...
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- Hibernate框架简单应用
Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...
- ssh架构之hibernate(一)简单使用hibernate完成CRUD
1.Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,h ...
- 45个很实用的 Oracle 查询语句小结
这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...
- .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
.NET 跨平台RPC框架DotNettyRPC DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...
- 简单实用的php分页函数代码
一个简单实用的php分页函数,分页导航中可以默认为空,在函数内部再设置本页URL. 代码: <?php /** * 分页 * @category 功能 * @param $totle:信息总数 ...
随机推荐
- 【转】使用Apache Kylin搭建企业级开源大数据分析平台
http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...
- Swift3.0语言教程替换子字符串
Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除,然后再进行添加.为了让这一繁琐的过程变的简单,NSString提供了替换子字符 ...
- CDN(内容分发网络)是什么?
尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度. 解决CDN缓 ...
- 遍历table指定name的td
$("td[name='rates']").each(function () { var temp = $(this).text().substr(0,$(this).text() ...
- 5.19[bzoj树网的核]
围观了final,SJTU还是飞了,泽民同志劲啊! 膜拜归膜拜...回来开题 bzoj1999树网的核 最近就喜欢给自己找切不动的题...QAQ ok.....昨天在家里做了一个下午+晚上 又困&am ...
- Glow Android 优化实践
了解 Glow 的朋友应该知道,我们主营四款 App,分别是Eve.Glow.Nuture和Baby.作为创业公司,我们的四款 App 都处于高速开发中,平均每个 Android App 由两人负责开 ...
- 并查集(删除) UVA 11987 Almost Union-Find
题目传送门 题意:训练指南P246 分析:主要是第二种操作难办,并查集如何支持删除操作?很巧妙的方法:将并查集树上p的影响消除,即在祖先上(sz--, sum -= p),然后为p换上马甲:id[p] ...
- HTML5中createPattern()
定义和用法 createPattern() 方法在指定的方向内重复指定的元素. 元素可以是图片.视频,或者其他 <canvas> 元素. 被重复的元素可用于绘制/填充矩形.圆形或线条等等. ...
- Codeforces 617E XOR and Favorite Number(莫队算法)
题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个. 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减 ...
- 由addOneMember引发的思考
addOneMember是一个方法,这个方法在两处地方重复了. 所以在修改页面的时候,发现修改了一处,如果是新手,肯定不会注意到另外一处有问题,他如果没有看清楚这个类到底整体怎样,那么他会犯的错误是就 ...