session中get()方法只能通过id来查询结果;
hibernate工具类的完善(HibernateUtil):
public class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){}
static{
Configuration cfg=new Configuration();
cfg.configure();
sessionFactory=cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
/*
* 增加
*/
public static void add(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/*
* 更新
*/
public static void update(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.update(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/*
* 删除
*/
public static void delete(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.delete(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/*
* 根据id查询结果
*/
public static Object get(Class clazz,Serializable id){
Session s=null;
try{
s=HibernateUtil.getSession();
Object obj=s.get(clazz, id);
return obj;
}finally{
if(s!=null){
s.close();
}
}
}
}
通过名字查询的方法
static void query(String name){
Session s=null;
try{
s=HibernateUtil.getSession();
String sql="from UserTest as user where name=?";
Query query=s.createQuery(sql);
query.setString(0, name);
List<UserTest> list=query.list();
for(UserTest user:list){
System.out.println(user.getName());
}
}finally{
if(s!=null){
s.close();
}
}
}
针对上述程序做如下 修改
hql的命名参数
String sql="from UserTest as user where user.name=:n";
query.setString("n",name);
实现分页的查询
query.setFirstResult(200); 从第几条开始
query.setMaxResults(10); 一共查询几条