hibernate 查询

获取Session

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

public class HibernateSessionUtil {

    private static SessionFactory sessionFactory;

    static {
        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                .configure() //默认值:hibernate.cfg.xml
                .build();
        try {
            sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
        }
        catch (Exception e) {
            StandardServiceRegistryBuilder.destroy( registry );
        }
    }


    public static Session createSession(){
        return sessionFactory.openSession();
    }
}

获取Query对象

session = HibernateSessionUtil.createSession();
//Query对象
Query query = session.createQuery("");
//NativeQuery对象
NativeQuery nativeQuery = session.createNativeQuery("");

NativeQuery对象方法

//将查询结果放入实体
addEntity();

Query对象方法

//给占位符设置值
setParameter()
//将查询结果加入List集合中
list()
//查询单个结果
uniqueResult()
//执行更新或删除
executeUpdate()

hql

 1 -- 查询并将查询结果注入到实体中
 2 select t from PersonEntity as p;
 3 -- 简写方式
 4 from PersonEntity;
 5 
 6 -- 带条件的查询
 7 from PersonEntity where p_id=?;
 8 
 9 -- 查询多列,注入到多个数组
10 -- [personId,personName]
11 select personId,personName from PersonEntity;
12 
13 -- 使用DTO的构造器
14 select new com.dto.personDTO(personId,personName) from PersonEntity;
15 
16 -- 使用map
17 select new map(personId,personName) form PersonEntity;
18 
19 -- 连表查询
20 -- e.g. Person 和 Room
21 select new map(p.personId,r.roomName) from PersonEntity p left join p.roomList r where p.personName=?
22 
23 -- 删除
24 delete from PersonEntity where personName=?
25 
26 -- 修改
27 update PersonEntity set personName=? where personId=?
posted @ 2020-03-20 17:39  派1199  阅读(165)  评论(0编辑  收藏  举报