首页 > 作文

Spring Data JPA实现查询结果返回map或自定义的实体类

更新时间:2023-04-04 01:42:47 阅读: 评论:0

目录
spring data jpa查询结果返回map或自定义的实体类1.工具类2.具体应用spingboot:jpa:spring data jpa 返回map 结果集

spring data jpa查询结果返回map或自定义的实体类

在jpa中我们可以使用entitymanager.createnativequery()来执行原生的sql语句,并且jpa的底层实现都是支持返回map对象的。

例如:

 ecliplink 的 query.thint(queryhints.result_type, resulttype.map); hibernate 的query.unwrap(sqlquery.class).tresulttransformer(transformers.alias_to_entity_map); openjpa 的 queryimpl impl = q.unwrap(queryimpl.class); impl.tresultclass(map.class);

本文中使用的是spring data jpa(spring data jpa 可以理解为 jpa 规范的再次封装抽象,底层还是使用了 hibernate 的 jpa 技术实现),遂用 hibernate 的query.unwrap(sqlquery.class).tresulttransformer(transformers.alias_to_entity_map)。

1.工具类

@componentpublic class entitymanagerutil<t> {   @persistencecontext   private entityma公务员录用系统nager entitymanager;     //1.返回map   public lis国庆节作文400字t<map<string, object>> getlistmap(string sql){      query nativequery=entitymanager.createnativequery(sql);      nativequery.unwrap(sqlquery.class).tresulttransformer(transformers.alias_to_entity_map);      list resultlist=nativequery.getresultlist();      return resultlist;   }     //2.返回自定义实体类   public list<t> nativequeryresult(string sql, class clazz) {     sql = normalizer.normalize(sql, normalizer.form.nfkc);     sql = sql.replaceall(".*([';]+|(--)+).*", "");     query query = entitymanager.createnativequery(sql);     list<t> querylist = query.unwrap(sqlquery.class).tresulttransformer(transformers.aliastobean(clazz)).list();     return querylist;   }}

2.具体应用

 //1.自动注入 @autowired private entitymanagerutil entitymanagerutil;     //1.返回map     string sql="sql语句";     list<map> list=entitymanagerutil.getlistmap(sql);     //2.1 返回自定义实体类(方法一)     list<实体类> list = entitymanagerutil.nativequeryresult(sql, 实体类.class);    //2.2  返回自定义实体类(方法二 hql)

在hql中使用 lect new 包名.类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充。

spingboot:jpa:spring data jpa 返回map 结果集

   @persistencecontext    private entitymanager em;    /**     * 通过时间登高杜甫翻译范围查询职位统计结果     * @param startmonth     * @param endmonth     * @return     */    @override    public string querypositionbymonthofyear(string startmonth, string endmonth) {         int sumnewposn =0;        int sumcurrposn =0;        int dailyaverage =0;        map<2017年冬至string, object> resultmap=null;        jsonobject jo =null;        jsonobject jod =null;        string endmonthtmp=null;        list<map<string,object>> lis = null;        try {            int tmp = integer.valueof(endmonth.split("-")[1])+1;            endmonthtmp=integer.valueof(endmonth.split("-")[0])+"-"+tmp;            string sql = "lect left(statistic_time,7) time ,sum(new_position) newposition ,sum(curr_position) nowrecruitposition  from t_cal_positions " +                            "where statistic_time > '"+startmonth+"' and statistic_time <'"+endmonthtmp+"' group by left(statistic_time,7)";            query query = em.createnativequery(sql);            query.unwrap(org.hibernate.sqlquery.class)                    .tresulttransformer(transformers.alias_to_entity_map);                list<map<string, object>> rows  = query.getresultlist();                if(null!=rows &&  rows.size()>0){                        resultmap  = new hashmap<string, object>();                       cotx的导数 lis= new arraylist<map<string,object>>();                        for (map<string, object> map : rows) {                            if(map.get("time").equals(endmonth)){//                              int daynum = dateutil.getdayofmonth(integer.valueof(endmonth.split("-")[0]),integer.valueof(endmonth.split("-")[1]));                                dailyaverage=integer.valueof(string.valueof(map.get("nowrecruitposition")))/dateutil.getdateofmonth();                            }                              lis.add(map);                        }                        jo = new jsonobject();                        jod = new jsonobject();                        jod.put("dailyaverage",dailyaverage);                        jod.put("list",lis);                        jo.put("code", enumhttpstatustype.success.getcode());                        jo.put("msg",enumhttpstatustype.success.getstatus());                        jo.put("data",jod);                        return jo.tostring();                    }        } catch (exception e) {            e.printstacktrace();        }        return jo.tostring();    } 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 01:42:45,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/84205c973b79bac4f0790d0b088647b7.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Spring Data JPA实现查询结果返回map或自定义的实体类.doc

本文 PDF 下载地址:Spring Data JPA实现查询结果返回map或自定义的实体类.pdf

标签:自定义   实体类   属性   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图