参数绑定有三种方法,在此讲效率较高的,也就是常用的两种方法:
持久化类:
package entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
//HQl查询图书信息
@Entity
@Table
public class HqlQuery {
private int id;
private String name;
private String author;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
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 getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public HqlQuery() {
super();
}
public HqlQuery(String name, String author) {
super();
this.name = name;
this.author = author;
}
}
//参数绑定的查询:
package test;
import java.util.Iterator;
import java.util.List;
import java.util.jar.Attributes.Name;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import entity.HqlQuery;
import util.HibernateUtil;
//参数绑定
public class ParamTest {
public static void main(String[] args) {
//parQue();
named();
}
//使用占位符
public static void parQue(){
Session session=HibernateUtil.getCurrentSession();
Transaction transaction=session.beginTransaction();
String hql="from HqlQuery where name=?";
Query query=session.createQuery(hql);
query.setParameter(0,"老人与海");//设置参数
Iterator it=query.iterate();
while(it.hasNext()){
HqlQuery h=(HqlQuery)it.next();
System.out.println(h.getAuthor());
}
}
//使用命名参数
public static void named(){
Session session=HibernateUtil.getCurrentSession();
Transaction transaction=session.beginTransaction();
String hql="from HqlQuery where name=:name";
Query query=session.createQuery(hql);
query.setParameter("name","与狼共舞");
Iterator it=query.iterate();
while(it.hasNext()){
HqlQuery h=(HqlQuery)it.next();
System.out.println("作者:" + h.getAuthor());
}
}
}