zoukankan      html  css  js  c++  java
  • 通过sql语句查询出来的结果字段没有到对应实体类时的处理方法

    通过sql语句查询出来的结果字段没有到对应实体类时的处理方法,对于Person类获取用户第一个名字和年龄两个字段,常见的有两种方式:

      1、在创建一个与查询结果字段对应的类,然后通过构造函数实现:

         Query query = em.createQuery("select new com.ejb.bean.SimplePerson(p. firstname, p.age) from Person p ");

      2、通过sql语句将查询结果放到Object数组中,然后再获取一个List集合,里面存放的是Object数组:  

     Query query = em.createNativeQuery("select p.firstname,p.age from person as p");
     List list = query.getResultList();
     for (int i = 0; i < list.size(); i++) {
        Object[] obj = (Object[]) list.get(i);
        System.out.println(" firstname: "+ obj[0]+"  age: "+obj[1]);
     }

       综上所述:建议还是使用第一种(字段比较多),因为它更符合面向对象的思想,获取数据也比较方便。

    public class Person {    
        private String firstname;
        private String secondname;
        private int age;
        public String getFirstname() {
            return firstname;
        }
        public void setFirstname(String firstname) {
            this.firstname = firstname;
        }
        public String getSecondname() {
            return secondname;
        }
        public void setSecondname(String secondname) {
            this.secondname = secondname;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }

        解决方案一,按照Object[]数据取出数据,然后自己组bean
      解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1 filed1,type2 field2) ,然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。

  • 相关阅读:
    Flask 【第三篇】使用DBUtils实现数据库连接池和蓝图
    Flask 【第二篇】Flask基础
    Flask 【第一篇】Flask简介
    Django 【第二十五篇】Django admin源码解析
    Django 【第二十四篇】Django admin简单使用
    Django 【第二十三篇】优化查询
    Django 【第二十二篇】ModelForm
    Django 【第二十一篇】中介模型以及优化查询以及CBV模式
    Django 【第二十篇】后端CORS解决跨域问题
    查询续与ajax
  • 原文地址:https://www.cnblogs.com/lbangel/p/3428927.html
Copyright © 2011-2022 走看看