使用EntityManager就可以实现这一点。
假设您的实体类如下所示:
import javax.persistence.*;
import java.math.BigDecimal;
@Entity
@Table(name = "USER_INFO_TEST")
public class UserInfoTest {
private int id;
private String name;
private String rollNo;
public UserInfoTest() {
}
public UserInfoTest(int id, String name) {
this.id = id;
this.name = name;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, precision = 0)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "name", nullable = true)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Basic
@Column(name = "roll_no", nullable = true)
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
}
您的查询语句是 "select id, name from users where roll_no = 1001"。
这个查询将返回一个带有 id 和 name 列的对象。您的 Response 类如下所示:
您的 Response 类如下:
public class UserObject{
int id;
String name;
String rollNo;
public UserObject(Object[] columns) {
this.id = (columns[0] != null)?((BigDecimal)columns[0]).intValue():0;
this.name = (String) columns[1];
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
}
在这里,UserObject构造函数将获取一个对象数组并使用该对象设置数据。
public UserObject(Object[] columns) {
this.id = (columns[0] != null)?((BigDecimal)columns[0]).intValue():0;
this.name = (String) columns[1];
}
您的查询执行函数如下所示:
public UserObject getUserByRoll(EntityManager entityManager,String rollNo) {
String queryStr = "select id,name from users where roll_no = ?1";
try {
Query query = entityManager.createNativeQuery(queryStr);
query.setParameter(1, rollNo);
return new UserObject((Object[]) query.getSingleResult());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
在此处您需要导入以下包:
import javax.persistence.Query
import javax.persistence.EntityManager
现在您的主类,需要调用此函数。首先获取EntityManager并调用此getUserByRoll(EntityManager entityManager,String rollNo)
函数。调用过程如下:
这是导入
import javax.persistence.EntityManager
import javax.persistence.PersistenceContext
通过以下方式获取EntityManager
:
@PersistenceContext
private EntityManager entityManager;
UserObject userObject = getUserByRoll(entityManager,"1001");
现在您已经有了这个 userObject 中的数据。
注意:
query.getSingleResult()
返回一个对象数组。您必须保持查询列位置和数据类型与查询列位置相同。
select id,name from users where roll_no = 1001
查询返回一个数组,它的 [0] --> id 和 1 -> name。
更多信息请访问此线程。
@Query
注释? - B378@Query
注解。 - ilyaUSERS
必须是模型(领域)类的名称吗?还是您必须查看数据库中表的名称? - hane Smitter