一耗跛、對象導(dǎo)航查詢
之前的客戶和聯(lián)系人的關(guān)系是一 對多的關(guān)系:一對多
場景:根據(jù)客戶id查詢客戶尖飞,在查出該客戶的所有聯(lián)系人
@Test
public void selectTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//根據(jù)c_id 查詢出該客戶
Customer customer = session.get(Customer.class,1);
//然后查詢出該客戶聯(lián)系人
Set<Salesperson> set = customer.getSalespersonSet();
Iterator<Salesperson> it = set.iterator();
while (it.hasNext()) {
Salesperson str = it.next();
System.out.println(str.getS_name());
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
二翘骂、HQL查詢
- 查詢所有客戶信息
- 創(chuàng)建Query對象驱闷,寫出hql語句
- 調(diào)用query對象里面的方法得到結(jié)果
- 查詢所有 from+實(shí)體類名稱
@Test
public void selectTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("from Customer");
//調(diào)用方法得到結(jié)果
List<Customer> list = query.list();
for (Customer customer: list) {
System.out.println(customer.getC_id()+"-"+customer.getC_name());
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
- 條件查詢
- 語句:from 實(shí)體類名稱 where 實(shí)體類屬性=? and 實(shí)體類名稱
@Test
public void selectByCidAndCnameTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("from Customer where c_id = ? and c_name = ?");
query.setParameter(0,1);
query.setParameter(1,"李客戶");
//調(diào)用方法得到結(jié)果
List<Customer> list = query.list();
for (Customer customer: list) {
System.out.println(customer.getC_id()+"-"+customer.getC_name());
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
條件查詢
- 排序查詢
- 語句:from 實(shí)體類名稱 order by 實(shí)體類名稱 asc/desc
@Test
public void selectOrderByTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("from Customer order by c_id desc ");
//調(diào)用方法得到結(jié)果
List<Customer> list = query.list();
for (Customer customer: list) {
System.out.println(customer.getC_id()+"-"+customer.getC_name());
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
- 分頁查詢
@Test
public void selectLimitTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("from Customer");
//設(shè)置分頁數(shù)據(jù)
query.setFirstResult(0);
query.setMaxResults(2);
//調(diào)用方法得到結(jié)果
List<Customer> list = query.list();
for (Customer customer: list) {
System.out.println(customer.getC_id()+"-"+customer.getC_name());
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
- 投影查詢
- 語句:select * from 實(shí)體類屬性名稱一敲董,實(shí)體類屬性名稱二, from 實(shí)體類名稱
- select 后面不能寫 * 號慰安,不支持
@Test
public void selectSomeTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("select c_name from Customer");
//調(diào)用方法得到結(jié)果
List<Object> lists = query.list();
for (Object list: lists) {
System.out.println(list);
}
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
image.png
- 聚集函數(shù)使用
- count 腋寨,sum , avg , mac , min
- 語句:select count(*) from 實(shí)體類名稱
@Test
public void selectHanshuTest(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//創(chuàng)建query對象
Query query = session.createQuery("select count(*) from Customer");
//調(diào)用方法得到結(jié)果
Object count = query.uniqueResult();
//先轉(zhuǎn)換成long類型,再轉(zhuǎn)換為int
Long co = Long.parseLong(count.toString());
System.out.println(co.intValue());
transaction.commit();
}catch (Exception e){
transaction.rollback();
e.printStackTrace();
}finally{
session.close();
sessionFactory.close();
}
}
上一篇:Hibernater學(xué)習(xí)筆記(五)
當(dāng)前文集 :Hibernate框架學(xué)習(xí)
本筆記hibernate案例:github地址