工单里面可能有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简单实用,做链接查询的更多相关文章

  1. java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)

    1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...

  2. Hibernate - SQLQuery

    使用SQLQuery 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 标量查询 ...

  3. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  4. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  5. Hibernate框架简单应用

    Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...

  6. ssh架构之hibernate(一)简单使用hibernate完成CRUD

    1.Hibernate简介   Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,h ...

  7. 45个很实用的 Oracle 查询语句小结

     这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...

  8. .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 ...

  9. 简单实用的php分页函数代码

    一个简单实用的php分页函数,分页导航中可以默认为空,在函数内部再设置本页URL. 代码: <?php /** * 分页 * @category 功能 * @param $totle:信息总数 ...

随机推荐

  1. 【框架】网络请求+Gson解析--Retrofit 2

    其实内部是封装了Okhttp和Gson解析 public class CourseFragmentAPI { public static void get(String userId, BaseCal ...

  2. android MPAndroidChart饼图实现图例后加数字或文本(定制图例)

    转载请注明:http://blog.csdn.net/ly20116/article/details/50905789 MPAndroidChart是一个非常优秀的开源图表库,MPAndroidCha ...

  3. JSON.parse()和JSON.stringify()使用

    JSON.parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age&qu ...

  4. TODO软件工程--如何预算项目的工期

    我的项目后台接口已经开发好,是前人留下的接口,现在只需要和前端联调,本以为后台的开发周期短,可以提早上线,可以因为旧接口不兼容新的要求 不得不重新写,造成了工期的延误. 如何计算一个工期被提上日程.

  5. ural 1069. Prufer Code

    1069. Prufer Code Time limit: 0.25 secondMemory limit: 8 MB A tree (i.e. a connected graph without c ...

  6. BZOJ3515 : EvenPaths

    首先拓扑排序,并将障碍点按拓扑序平均分成两半. 那么一条$0$到$1$的路径一定是形如: $0$->前一半点->后一半点->第一个后一半障碍点->后一半点->$1$. 对 ...

  7. node.js 实现一个简单的登录拦截器

    拦截器在web开发中随处可见,比如站点的管理后台,不说所有人都能进入,所以就需要做一个拦截器并友好的跳转到提示页. 下面我们简单实现一种,判断用户是否登录成功,登录不成功的用户自动重定向到登录页面. ...

  8. 来自于2016.2.24的flag

    今天又做了一套xj模拟题-------打比赛这种事情变得越来越无聊了------既影响自己的计划(虽然看起来很难完成的样子),又扰乱心情.而且题目大都是学习算法之类的,与计划不接轨就非常没有兴趣. 然 ...

  9. Codeforces Round #215 (Div. 2) C. Sereja and Algorithm

    #include <iostream> #include <vector> #include <algorithm> #include <string> ...

  10. 洛谷 P1160 队列安排 Label:链表 数据结构

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...