JPA 原生态SQL 的复杂查询之createNamedQuery调用存储过程,返回的List字段对应的填充实体
============实体类,调用存储过程==========================
@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "getNativeNutShellInfo",   //需要调用的name
        query = "{call cp_syslogin_web(?,?,?)}",   //存储过程,返回的List字段对应的值@EntityResult此处填充实体的属性值
        resultSetMapping = "ReturnColumnEntityList" 
    )  
})  
 
@SqlResultSetMappings({  
    @SqlResultSetMapping(  
        name = "ReturnColumnEntityList",  
        entities = {
          @EntityResult(entityClass = NutShellInfo.class,fields={  //返回的List字段对应的值此处填充实体的属性值
           @FieldResult(name = "aguid", column = "aguid"),
           @FieldResult(name = "user", column = "htkusr"),
           @FieldResult(name = "qty", column = "qtynow"),
           @FieldResult(name = "registered", column = "breg"),
           @FieldResult(name = "hint", column = "hint"),
           @FieldResult(name = "ver", column = "ver"),
           @FieldResult(name = "overQty", column = "boverqty"),
           @FieldResult(name = "timeout", column = "btimeout"),
           @FieldResult(name = "host", column = "htkwww")
          })

}

)  
})

@Entity
public class NutShellInfo {
 @Id
 private String aguid;
 @Column(name = "htkusr")
 private String user;
 @Column(name = "qtynow")
 private double qty;
 @Column(name = "breg")
 private boolean registered;
 private String hint;
 private String ver;
 @Column(name = "boverqty")
 private boolean overQty;
 @Column(name = "btimeout")
 private boolean timeout;
 @Column(name = "htkwww")
 private String host;
 @Transient
 private String password;//这个字段不对数据库操作

public String getUser() {
  return user;
 }

public void setUser(String user) {
  this.user = user;
 }

public double getQty() {
  return qty;
 }

public void setQty(double qty) {
  this.qty = qty;
 }

public boolean isRegistered() {
  return registered;
 }

public void setRegistered(boolean registered) {
  this.registered = registered;
 }

public String getHint() {
  return hint;
 }

public void setHint(String hint) {
  this.hint = hint;
 }

public String getVer() {
  return ver;
 }

public void setVer(String ver) {
  this.ver = ver;
 }

public boolean isOverQty() {
  return overQty;
 }

public void setOverQty(boolean overQty) {
  this.overQty = overQty;
 }

public boolean isTimeout() {
  return timeout;
 }

public void setTimeout(boolean timeout) {
  this.timeout = timeout;
 }

public String getHost() {
  return host;
 }

public void setHost(String host) {
  this.host = host;
 }

public String getPassword() {
  return password;
 }

public void setPassword(String password) {
  this.password = password;
 }

=========================dao=========================
 @Service
 public class PubBaseDaoImpl<T> implements PubBaseDao<T> {
 private EntityManager em = null;

@PersistenceContext
 public void setEm(EntityManager em) {
  this.em = em;
 }

@Override
 public List<T> qryNamedQuery(String nativeName,Object[] params) {
  Query q = em.createNamedQuery(nativeName);
  setQueryParams(q, params);
  return q.getResultList();
 }

public void setQueryParams(Query query, Object[] params) {
  try {
   if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
     query.setParameter(i + 1, params[i]);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

=================services===================================
 @Override
 public void qryInfo(String userId, String machineCode) {
  List<NutShellInfo> list = baseDao.qryNamedQuery("getNativeNutShellInfo",new Object[] { userId, machineCode, 0 });
  
 }

JPA 原生态SQL 的复杂查询之createNamedQuery,select * from查询,返回的List字段对应的填充实体
============实体类==========================
@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "getNativeNutShellInfo",   //需要调用的name
        query = "select * from NutShellInfo where aguid=? and  htkusr=? and btimeout=? ",   //存储过程,返回的List字段对应的值@EntityResult此处填充实体的属性值
        resultSetMapping = "ReturnColumnEntityList" 
    )  
})  
 
@SqlResultSetMappings({  
    @SqlResultSetMapping(  
        name = "ReturnColumnEntityList",  
        entities = {
          @EntityResult(entityClass = NutShellInfo.class,fields={  //返回的List字段对应的值此处填充实体的属性值
           @FieldResult(name = "aguid", column = "id"),
           @FieldResult(name = "user", column = "htkusr"),
           @FieldResult(name = "qty", column = "qtynow"),
           @FieldResult(name = "registered", column = "breg"),
           @FieldResult(name = "hint", column = "hint"),
           @FieldResult(name = "ver", column = "ver"),
           @FieldResult(name = "overQty", column = "boverqty"),
           @FieldResult(name = "timeout", column = "btimeout"),
           @FieldResult(name = "host", column = "htkwww")
          })

}

)  
})

@Entity
public class NutShellInfo {
 @Id
 private String aguid;
 @Column(name = "htkusr")
 private String user;
 @Column(name = "qtynow")
 private double qty;
 @Column(name = "breg")
 private boolean registered;
 private String hint;
 private String ver;
 @Column(name = "boverqty")
 private boolean overQty;
 @Column(name = "btimeout")
 private boolean timeout;
 @Column(name = "htkwww")
 private String host;
 @Transient
 private String password;//这个字段不对数据库操作

public String getUser() {
  return user;
 }

public void setUser(String user) {
  this.user = user;
 }

public double getQty() {
  return qty;
 }

public void setQty(double qty) {
  this.qty = qty;
 }

public boolean isRegistered() {
  return registered;
 }

public void setRegistered(boolean registered) {
  this.registered = registered;
 }

public String getHint() {
  return hint;
 }

public void setHint(String hint) {
  this.hint = hint;
 }

public String getVer() {
  return ver;
 }

public void setVer(String ver) {
  this.ver = ver;
 }

public boolean isOverQty() {
  return overQty;
 }

public void setOverQty(boolean overQty) {
  this.overQty = overQty;
 }

public boolean isTimeout() {
  return timeout;
 }

public void setTimeout(boolean timeout) {
  this.timeout = timeout;
 }

public String getHost() {
  return host;
 }

public void setHost(String host) {
  this.host = host;
 }

public String getPassword() {
  return password;
 }

public void setPassword(String password) {
  this.password = password;
 }

=========================dao=========================
 @Service
 public class PubBaseDaoImpl<T> implements PubBaseDao<T> {
 private EntityManager em = null;

@PersistenceContext
 public void setEm(EntityManager em) {
  this.em = em;
 }

@Override
 public List<T> qryNamedQuery(String nativeName,Object[] params) {
  Query q = em.createNamedQuery(nativeName);
  setQueryParams(q, params);
  return q.getResultList();
 }

public void setQueryParams(Query query, Object[] params) {
  try {
   if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
     query.setParameter(i + 1, params[i]);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

=================services===================================
 @Override
 public void qryInfo(String userId, String machineCode) {
  List<NutShellInfo> list = baseDao.qryNamedQuery("getNativeNutShellInfo",new Object[] { userId, machineCode, 0 });
  
 }

JPA 原生态SQL 的复杂查询之createNamedQuery,select xxx,xxx from查询,返回的List字段对应的填充实体
============实体类==========================
@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "getNativeNutShellInfo",   //需要调用的name
        query = "select aguid,htkusr from NutShellInfo where aguid=? and  htkusr=? and btimeout=? ",   //存储过程,返回的List字段对应的值@EntityResult此处填充实体的属性值
        resultSetMapping = "ReturnColumnEntityList" 
    )  
})  
 
@SqlResultSetMappings({  
    @SqlResultSetMapping(  
        name = "ReturnColumnEntityList",  
        entities = {}
        columns = {
     @ColumnResult(name = "aguid"),  
            @ColumnResult(name = "htkusr"),  
        }
    )  
})

@Entity
public class NutShellInfo {
 @Id
 private String aguid;
 @Column(name = "htkusr")
 private String user;
 @Column(name = "qtynow")
 private double qty;
 @Column(name = "breg")
 private boolean registered;
 private String hint;
 private String ver;
 @Column(name = "boverqty")
 private boolean overQty;
 @Column(name = "btimeout")
 private boolean timeout;
 @Column(name = "htkwww")
 private String host;
 @Transient
 private String password;//这个字段不对数据库操作

public String getUser() {
  return user;
 }

public void setUser(String user) {
  this.user = user;
 }

public double getQty() {
  return qty;
 }

public void setQty(double qty) {
  this.qty = qty;
 }

public boolean isRegistered() {
  return registered;
 }

public void setRegistered(boolean registered) {
  this.registered = registered;
 }

public String getHint() {
  return hint;
 }

public void setHint(String hint) {
  this.hint = hint;
 }

public String getVer() {
  return ver;
 }

public void setVer(String ver) {
  this.ver = ver;
 }

public boolean isOverQty() {
  return overQty;
 }

public void setOverQty(boolean overQty) {
  this.overQty = overQty;
 }

public boolean isTimeout() {
  return timeout;
 }

public void setTimeout(boolean timeout) {
  this.timeout = timeout;
 }

public String getHost() {
  return host;
 }

public void setHost(String host) {
  this.host = host;
 }

public String getPassword() {
  return password;
 }

public void setPassword(String password) {
  this.password = password;
 }

=========================dao=========================
 @Service
 public class PubBaseDaoImpl<T> implements PubBaseDao<T> {
 private EntityManager em = null;

@PersistenceContext
 public void setEm(EntityManager em) {
  this.em = em;
 }

@Override
 public List<T> qryNamedQuery(String nativeName,Object[] params) {
  Query q = em.createNamedQuery(nativeName);
  setQueryParams(q, params);
  return q.getResultList();
 }

public void setQueryParams(Query query, Object[] params) {
  try {
   if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
     query.setParameter(i + 1, params[i]);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

=================services===================================
 @Override
 public void qryInfo(String userId, String machineCode) {
  List<NutShellInfo> list = baseDao.qryNamedQuery("getNativeNutShellInfo",new Object[] { userId, machineCode, 0 });
  
 }

JPA 原生态SQL 的复杂查询之createNamedQuery的更多相关文章

  1. JPA SQL 的复杂查询createNamedQuery

    @NamedNativeQueries({ @NamedNativeQuery( name = "getNativeNutShellInfo", //需要调用的name query ...

  2. SpringData JPA使用JPQL的方式查询和使用SQL语句查询

    使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件, 这时就可以使用@Query注解,结合JPQL的语句方式完成查询 持久 ...

  3. 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合

    在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...

  4. 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD

    完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用S ...

  5. JPA的多表复杂查询

    转 JPA的多表复杂查询:详细篇 原文链接: https://mp.weixin.qq.com/s/7J6ANppuiZJccIVN-h0T3Q 2017-11-10 从小爱喝AD钙  最近工作中由于 ...

  6. SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法

    软件152 尹以操 首先谢谢大佬的简书文章:http://www.jianshu.com/p/45ad65690e33# 这篇文章中讲的是spring中使用spring data jpa,使用了xml ...

  7. Sql Server中查询今天、昨天、本周、上周、本月、上月数据

    Sql Server中查询今天.昨天.本周.上周.本月.上月数据 在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及 ...

  8. sql跨库查询

    ---------------------------------------------------------------------------------- --1. 创建链接服务器 --1. ...

  9. SQL 数据分页查询

    最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5 ...

随机推荐

  1. js数组的声明与应用

    js数组的声明与应用 数组:一种容器,存储批量数据.JavaScript是一种弱类型语言.什么是弱类型,就是变量可以存储多种类型变量的引用不会报错.所以js数组可以存储不同的数据. 一.数组的作用:只 ...

  2. 《C#高级编程》之泛型--1创建泛型类

    .NET自从2.0版本开始就支持泛型. 非泛型链表 闲话休提,马上来看下非泛型的简化链表类,它可以包含任意类型的对象. LinkedListNode.cs中: 在链表中,一个元素引用另一个元素,所以必 ...

  3. CI在CentOS中的部署与实践LNMP

    1. 平台:lnmp CentOS6.4 (64bit) nginx1.2.4+php5.5.7配置过程中遇到的问题与处理方式: 1. 404错误: 原因:nginx中的配置请求路径的问题 2. 40 ...

  4. click和onclick的区别

    onclick是绑定事件,click本身是方法作用是触发onclick事件,只要执行了元素的click()方法,下面有个示例,大家可以看看   Html代码 ? 1 2 3 4 5 6 7 8 9 1 ...

  5. 用xsd验证xml

    using System; using System.Text; using System.Xml; namespace WebApplication1 { public partial class ...

  6. CSS使jsp图片旋转90度

    <style > img{ margin:100px auto 0; -moz-transform:rotate(-90deg); -webkit-transform:rotate(-90 ...

  7. [转] C# 绘制报表,使用Graphics.DrawString 方法

    原文 Graphics.DrawString 方法 在指定位置并且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Fo ...

  8. Web通信之:长轮询(long-polling)(转)

    Web通信之:长轮询(long-polling) “轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了.但是看到了英文才知道这个是网络通信专业的术语.轮询,其实就是一群人在排队买东 ...

  9. Java并发编程-volatile

    一. volatite 简述Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. ...

  10. C ~ C语言字节对齐

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...