zoukankan      html  css  js  c++  java
  • hibernate进行多表联合查询

    hibernate是按照hql语句来进行查询的, 里面所使用的表名, 其实是实体类的名字, hql语句的写法并没有多大差别, 是在返回结果的时候要稍微做一些处理

        //使用hibernate进行多表查询, 返回一个list
        public List<?> getHfxx(BigDecimal id) {
            String hql = "select a.xchfsj,a.khjb,a.khly,b.jhhffs from CmKhxxb a,CmKhgzxxb b where a.khbh=b.khbh and a.id="+id;
            List<?> list = hiberTem.find(hql);
            return list;
        }

    以上是查询的方法, 返回了一个list, 接收数据的方法在下面

        //点击回访客户, 返回客户信息表, 与上面的方法差不多, 只是返回给不同的标签
        @ResponseBody
        @RequestMapping(value="/getCmKhxx.do", method=RequestMethod.POST)
        public String getCmKhxx(@RequestParam(value="khid")String khid) {
            String json = "{"success":";
            BigDecimal bId = new BigDecimal(khid);
            List<?> list = cmKhxxbDao.getHfxx(bId);
            
            Iterator<?> iter = list.iterator();
            HashMap<String, String> map = null;
            while(iter.hasNext()) {
                Object[] o = (Object[])iter.next();
                if(o!=null) {
                    map = new HashMap<String, String>();
                    String hfsj = "";
                    try {
                        hfsj = DateFormat.getStringDate((Date)o[0]);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    map.put("xchfsj", hfsj);
                    map.put("khjb", (String)o[1]);
                    map.put("khly", (String)o[2]);
                    map.put("jhhffs", (String)o[3]);
                }
            }
            
            if(map==null) {
                json += "false}";
            } else {
                json += "true,"action":";
                json += JSON.toJSONString(map);
                json += "}";
            }
            return json;
        }

    在返回的这个list当中, 其实每一个对象都是按照你所写的select后面的字段名的顺序来的, 进行强转可以转换成功, 因为我是用的springMVC, 所以用了一个map来接收, 再进行JSON的转换传给前台, 上面代码中的 DateFormat 是自己写的一个日期转换的静态类, Date型的数据从数据库中取来是一个时间戳的形式, 需要先转换

    hibernate进行多表关联查询有一点需要注意, 如果有一个表中没有数据, 而在hql中加上了a.khbh = b.khbh诸如此类的条件, 返回的list就成了空

  • 相关阅读:
    编译安装mysql-5.6.36
    MYSQL数据库基础篇
    MYSQL数据库初学者必看
    Centos7下安装与卸载Jdk1.8
    Linux与Window之间的上传与下载
    MySQL主从搭建
    zabbix通过插件percona进行监控MySQL
    suse系统关闭防火墙
    编译安装zabbix3.0
    centos7安装tomcat
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/5881775.html
Copyright © 2011-2022 走看看