您的位置:首页 > 产品设计 > UI/UE

JPA SQL 的复杂查询createNamedQuery

2014-11-21 15:45 330 查看
@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 });

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: