[z]nativeSql
http://blog.csdn.net/chenallen1025/article/details/9169543
EntityManager API 提供了创建 Query 实例以执行原生 SQL 语句的createNativeQuery方法。
实体User:
- package com.cndatacom.jpa.entity;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.persistence.Table;
- @Entity
- @Table(name="t_user")
- public class User {
- /**
- * 主键
- */
- @Id
- @GeneratedValue
- private Long id;
- /**
- * 名字
- */
- @Column(name="name",length=50)
- private String name;
- /**
- * 密码
- */
- @Column(name="password",length=20)
- private String password;
- /**
- * 邮箱
- */
- @Column(name="email",length=50)
- private String email;
- /**
- * 年龄
- */
- @Column(name="age",length=3)
- private int age;
- public User() {
- }
- //以下省略getter/setter方法
- //......
- }
测试:
- package com.cndatacom.jpa.test;
- import java.util.List;
- import javax.persistence.EntityManager;
- import javax.persistence.EntityManagerFactory;
- import javax.persistence.Persistence;
- import javax.persistence.Query;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import com.cndatacom.jpa.entity.User;
- /**
- * 测试JPA原生SQL查询
- * @author Luxh
- */
- public class TestNativeQuery {
- EntityManagerFactory emf = null;
- @Before
- public void before() {
- //根据在persistence.xml中配置的persistence-unit name 创建EntityManagerFactory
- emf = Persistence.createEntityManagerFactory("myJPA");
- }
- @After
- public void after() {
- //关闭EntityManagerFactory
- if(null != emf) {
- emf.close();
- }
- }
- /**
- * 查询的结果是对象数组的集合
- */
- @Test
- public void testNativeQuery1() {
- EntityManager em = emf.createEntityManager();
- //定义SQL
- String sql = "SELECT * FROM t_user";
- //创建原生SQL查询QUERY实例
- <span style="color:#ff0000;">Query query = em.createNativeQuery(sql);</span>
- //执行查询,返回的是对象数组(Object[])列表,
- //每一个对象数组存的是相应的实体属性
- List objecArraytList = query.getResultList();
- for(int i=0;i<objecArraytList.size();i++) {
- Object[] obj = (Object[]) objecArraytList.get(i);
- //使用obj[0],obj[1],obj[2]...取出属性
- }
- em.close();
- }
- /**
- * 查询的结果是实体的集合
- */
- @Test
- public void testNativeQuery2() {
- EntityManager em = emf.createEntityManager();
- //定义SQL
- String sql = "SELECT * FROM t_user";
- //创建原生SQL查询QUERY实例,指定了返回的实体类型
- <span style="color:#ff0000;"> Query query = em.createNativeQuery(sql,User.class);
- </span> //执行查询,返回的是实体列表,
- List<User> userList = query.getResultList();
- em.close();
- }
- /**
- * 查询单个属性
- * 返回的是这个属性值的集合
- */
- @Test
- public void testNativeQuery3() {
- EntityManager em = emf.createEntityManager();
- //定义SQL
- String sql = "SELECT t.name FROM t_user t";
- //创建原生SQL查询QUERY实例
- <span style="color:#ff0000;"> Query query = em.createNativeQuery(sql);</span>
- //执行查询,返回的是String类型的集合,因为name这个属性是String类型
- List<String> resultList = query.getResultList();
- em.close();
- }
- /**
- * 查询多个属性
- * 返回的是这些属性值的数组的集合
- */
- @Test
- public void testNativeQuery4() {
- EntityManager em = emf.createEntityManager();
- //定义SQL
- String sql = "SELECT t.name,t.age,t.email FROM t_user t";
- //创建原生SQL查询QUERY实例
- <span style="color:#ff0000;"> Query query = em.createNativeQuery(sql); </span>
- //执行查询,返回的是查询属性值数组的集合
- List objecArraytList = query.getResultList();
- for(int i=0;i<objecArraytList.size();i++) {
- Object[] obj = (Object[]) objecArraytList.get(i);
- //使用obj[0],obj[1],obj[2]取出属性
- }
- em.close();
- }
- }
[z]nativeSql的更多相关文章
- 【Python】使用torrentParser1.03对多文件torrent的分析结果
Your environment has been set up for using Node.js 8.5.0 (x64) and npm. C:\Users\horn1>cd C:\User ...
- Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)
本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于andro ...
- Z字形扫描(201412-2)
问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...
- 【IOS】将一组包含中文的数据按照#ABC...Z✿分组
上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...
- Java 压缩/ 解压 .Z 文件
1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...
- 中文编程语言Z语言开源正式开源!!!
(Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...
- CCF——Z字形扫描问题
试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag ...
- Z.ExtensionMethods 一个强大的开源扩展库
今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档 ...
- Linux Ctrl+c与ctrl+z的区别
提问:CTRL-Z和CTRL-C区别?回答:CTRL-Z和CTRL-C都是中断命令,但是他们的作用却不一样.CTRL-C是强制中断程序的执行,而CTRL-Z的是将任务中断,但是此任务并没有结束,他仍然 ...
随机推荐
- ReactiveX 学习笔记(14)使用 RxJava2 + Retrofit2 调用 REST API
JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一个用于测试的 REST API 网站. ...
- 吴裕雄 05-mysql删除数据库
drop database <数据库名>; 例如删除名为 RUNOOB 的数据库:drop database RUNOOB; 使用 mysqladmin 删除数据库你也可以使用 mysql ...
- java 代码块,静态代码块,构造器等的执行顺序
写了一段测试代码,如下: public class ExecutionSequence extends fatherClass{ static{ System.out.printl ...
- AT&T汇编格式
一.汇编语言 (1) 指令 伪指令 (2)常量 表达式[常量 寄存器 标号 变量] 二. AT&T 与 Intel 格式相比应注意的地方 1.寄存器引用 mov %eax,%ebx 2.操 ...
- 前端三大框架之一React入门教程
相信大家对框架这个词都很熟悉吧,我一直喜欢js原生来开发,但是目前都要求工作效率,所有使用框架或者是库会使我们开发更加方便和快速,甚至一个人干十个人的活.. 框架优点: 1.方便开发.快速写功能 2. ...
- java基本数据间转换
string=====>int int x = Integer.parseInt(“1111”); string=====>char char x = request.getParamet ...
- 循环流程控制&方法(3)
1.循环流程控制 当某一段代码需要重复执行多次的时候,就需要用到循环: 循环三要素: 循环的起点:循环的终点(结束条件):步长: 当循环条件不再成立,结束循环: for循环 for(循环起点:循环条件 ...
- 解决pip下载速度慢
国外的pip源下载速度过慢,可以换成国内的源,这里换成豆瓣的源. 新建一个文件vim ~/.pip/pip.conf 内容为 [global]timeout = 6000index-url= http ...
- veil-evasion免杀处理
veil-evasion 开启 y 配置安装 安装好之后,再次运行veil-evasion 有50个payload模块 update 升级 list 查看有哪些payload 选一个payload 它 ...
- Android 集成高德地图
先上一张图片看看实现的效果啦!!! 首先登陆高德的开发者平台进行创建自己的应用程序,填写对应的包名,填写sHA1值(这个我这博客中写了获取的代码,可以直接复制粘贴),说了这么多其实都是废话,来我们看重 ...