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:信息总数 ...
随机推荐
- 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中
package com.sxd.test.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...
- 防止ViewPager和Fragment结合使用时候的数据预加载
不知道你们使用ViewPager和Fragment结合的时候发现一个问题没,如果你的每个Fragment都需要请求网络数据,并且你在请求网络数据的时候会加入进度对话框的加载显示效果,当你显示第一个Fr ...
- 利用JAX-WS 开发web服务
近日在学习Rogers Candenhead的第六版的<Java 入门经典>第22章.利用JAX-WS 开发web服务,简略总结而言主要包括以下几个步骤: 1.定义服务端点接口类: 主要就 ...
- POJ 3261 后缀数组
题目链接:http://poj.org/problem?id=3261 题意:约翰注意到奶牛产奶的之类是不断变化的,虽然他不能预测从当天到下一天的变化情况但是他知道变化是有规律的,牛奶的质量由一个整数 ...
- DSP using MATLAB示例Example3.16
代码: b = [0.0181, 0.0543, 0.0543, 0.0181]; % filter coefficient array b a = [1.0000, -1.7600, 1.1829, ...
- css:删除:×的效果
常常要使用的显示删除效果: DEMO
- zoj 3469 Food Delivery 区间dp + 提前计算费用
Time Limit: 2 Seconds Memory Limit: 65536 KB When we are focusing on solving problems, we usual ...
- 学习资源asp.net
http://www.runoob.com ajax 同一表单,多部分提交.增加,修改,删除 服务器端控件: http://technet.microsoft.com/zh-cn/library/cc ...
- Python学习笔记02
元组:圆括号的,不能进行赋值操作,即不可更改. 列表:方括号的,可以修改. 访问:均使用下标访问 # 元组是一个静态列表,初始化之后就不可以修改,可以试任意类型 tuple1 = ('a st ...
- git的合并与推送
集中式合作模式 1.git fetch 获取远程更新 2.git merge origin/master 进行合并,如果报错,则相应解决.注:你得用git bash命令行执行才能看见报错详情,用ecl ...