文档章节

JPA执行原生SQL

程序员Joe
 程序员Joe
发布于 2014/06/16 14:44
字数 163
阅读 637
收藏 0
package simple.page.service.database;


import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;


/**
 * 执行原生SQL Service
 * @author 周超 2014-6-16
 */

@Component
public class SqlService {
    @PersistenceContext
    EntityManager em;
    
    public List<Map<String,Object>> queryBySql(String sql){
        Query query = em.createNativeQuery(sql);
        @SuppressWarnings("unchecked")
        List<Map<String,Object>> list = query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
        return list;
    }
    
    
    @Transactional
    public void excuteSql(String sql){
        Query query = em.createNativeQuery(sql);
        query.executeUpdate();
    }
    
}

em.createNativeQuery(sql)返回的是javax.persistence.Query

可以用unwrap方法转换成SQLQuery(这个是hibernate的)

之后再用setResultTransformer方法将结果转换成Map类型。

这样可以便于抽成通用方法。网上的大多数都是没有列名的,返回数组通过下标取值。


© 著作权归作者所有

共有 人打赏支持
程序员Joe
粉丝 10
博文 11
码字总数 3963
作品 0
常州
程序员
私信 提问
jpa(二)----jpa @Query注解 原生insert\delete\update\select语句

-- 如果@Query注解加上nativeQuery=true 则查询语句使用原生sql,不加则使用HQL 一、jpa 原生insert的sql语句:

u010775025
05/30
0
0
在MVC架构中...sql语句放在什么地方?

第一种方式: 我之前是将sql语句放到dao中.... 在servlet中调用dao的方法 传递bean到dao中进行相关操作.... 这样的话更具不同的操作...我就要创建多个dao方法 第二种方式: 后来我把sql放到ser...

学徒三金
2013/11/18
3.5K
10
用jwebap监控独立数据源应用

前言 Apusic 应用服务器提供了数据源事件监控功能,通过 Apusic Studio 的辅助,可以非常直观地获得应用中 SQL 执行情况,帮助分析发现问题。 但是,在一些应用中,并未使用到 Apusic 的数据...

鉴客
2011/04/24
1K
0
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
0
0
web 基础巩固——JSP基础

本文按照官网文档总结,但是有可能会理解错误,学习时尽量和其他网站进行对比,同时也欢迎指出错误,好让我及时改正 什么是JSP页面? JSP页面是一个文本文档,包含两种类型的文本:静态数据,...

SXJR
11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
24分钟前
2
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部