版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/84824116
基础知识回顾
第一种:对象图导航检索
package cn.com.query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.Kinds;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
// 1、对象图导航检索
/*
* 前提:多对一的关系,根据多找一,例如根据联系人找客户,根据用户找职位
*/
@Test
public void demo() {
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
User u = session.get(User.class, "001");
Kinds k=u.getKk();
System.out.println(k.getKinds());
}
}
第二种:OID检索方式
package cn.com.query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.Kinds;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
//2.OID检索方式
/*
* OID检索方式主要只用session的get()和load()方法加载某条记录对应的对象
*
*/
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
User uu=session.get(User.class, "001");
Kinds kk=session.load(Kinds.class, "前台");
System.out.println(uu.getName());
System.out.println(kk.getKinds());
}
}
第三种HQL查询
第三种的第一个分支:HQL之基础查询
package cn.com.query;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.Sys_User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
//3.HQL检索方式
/*
* HQL检索是面向对象的查询语言,它与sql查询语言有些相似,但它使用的是类、对象和属性的概念,而没有表和字段的概念。
* 在hibernate提供的各种检索方式中,HQL是官方推荐的查询语言,也是使用最广泛的一种检索方式
*/
//3.1基本的检索
Session session=Hibernate_Utils.openSession();
Transaction tx=session.beginTransaction();
//这里的from Sys_User的Sys_User指的是类名称不是表名
Query query=session.createQuery("from Sys_User");
List<Sys_User> ll=query.list();
for (Sys_User s : ll) {
System.out.println(s.getUser_name());
}
tx.commit();
}
}
第三种的第二个分支排序检索
package cn.com.query;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.Sys_Role;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
// HQL 排序检索
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Sys_Role order by role_id desc");
List<Sys_Role> ll = query.list();
for (Sys_Role s : ll) {
System.out.println(s.getRole_name());
}
tx.commit();
}
}
第三种的第三个分支条件检索(按位置绑定参数和按名称绑定参数)
package cn.com.query;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.Sys_User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
// 条件查询-按照位置查询
/*Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Sys_User where user_name=?");
//注意是从0开始不是从1开始的
q.setString(0, "小田");
List<Sys_User> ll = q.list();
for (Sys_User ss : ll) {
System.out.println(ss.getUser_id());
}
tx.commit();*/
//按名称绑定参数
Session session=Hibernate_Utils.openSession();
Transaction tx=session.beginTransaction();
Query qq=session.createQuery("from Sys_User where user_name=:a");
qq.setString("a", "小何");
List<Sys_User> ll=qq.list();
System.out.println(ll.get(0).getUser_id());
tx.commit();
}
}
第三种的第四个分支分页查询
package cn.com.query;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
//分页查询
Session session=Hibernate_Utils.openSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("from User");
//开始索引,最小的是0
query.setFirstResult(1);
//查询的长度
query.setMaxResults(3);
List<User> lk=query.list();
for (User user : lk) {
System.out.println(user.getName());
}
}
}
第三种的第五个分支统计索引查询
package cn.com.query;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
//统计索引查询
Session session=Hibernate_Utils.openSession();
Transaction tx=session.beginTransaction();
Query q=session.createQuery("select count(*) from User");
//对于查询结果的只有一种,可以采取以下方法
Long i=(Long) q.uniqueResult();
System.out.println(i);
tx.commit();
session.close();
}
}
第三种的第六个分支投影查询
package cn.com.query;
import java.util.Arrays;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo1 {
/*
* author:命运的信徒 date:2018/12/05 arm:完成CRM的客户的条件查询
*/
@Test
public void demo() {
// 投影检索
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
// 1.投影一列检索
/*
* Query qq=session.createQuery("select name from User"); List<String>
* ll=qq.list(); for (String a : ll) { System.out.println(a); }
* tx.commit(); session.close();
*/
/*
* //2.投影多列检索 Query qq=session.createQuery("select name,kk from User");
* //对象数组,在集合里面是这样的([1,田],[2,江],[3,慢]); List<Object[]> ll=qq.list(); for
* (Object[] o : ll) { System.out.println(Arrays.toString(o)); }
* tx.commit();
*/
// 3.投影的构造方式的查询
//这种方法需要注意的是user表中有这个构造方法,不然会报错
Query qq = session
.createQuery("select new User(number,name) from User");
List<User> ll = qq.list();
for (User u : ll) {
System.out.println(u.getName() + u.getNumber());
}
tx.commit();
session.close();
}
}
QBC检索方法
基础知识了解
package cn.com.query;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo2 {
@Test
public void demo() {
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
// QBC检索
// 1.创建criteria对象
Criteria cc = session.createCriteria(User.class);
//设定查询条件
Criterion con = Restrictions.eq("name", "小田");
//添加查询条件
cc.add(con);
//执行查询,返回查询结果
User uu = (User) cc.uniqueResult();
System.out.println(uu.getNumber());
}
}
OBC查询之六种方法
package cn.com.query;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo2 {
@Test
public void demo() {
Session session = Hibernate_Utils.openSession();
Transaction tx = session.beginTransaction();
// QBC检索
/*
* // 1.创建criteria对象 Criteria cc = session.createCriteria(User.class);
* //设定查询条件 Criterion con = Restrictions.eq("name", "小田"); //添加查询条件
* cc.add(con); //执行查询,返回查询结果 User uu = (User) cc.uniqueResult();
* System.out.println(uu.getNumber());
*/
// 1.OBC查询之基础检索
// 创建criteria对象
/*
* Criteria cr=session.createCriteria(User.class); List<User>
* list=cr.list(); for (User user : list) { System.out.println(user); }
*/
// 2.条件检索
/*
* Criteria criteria=session.createCriteria(User.class); Criterion
* cc=Restrictions.like("name", "%小%"); criteria.add(cc); List<User>
* list=criteria.list(); for (User user : list) {
* System.out.println(user.getName()); }
*/
// 3.分页检索
/*
* Criteria criteria=session.createCriteria(User.class);
* criteria.setFirstResult(0); criteria.setMaxResults(3); List<User>
* ll=criteria.list(); for (User user : ll) {
* System.out.println(user.getName()); }
*/
// 4.排序检索
/*Criteria criteria = session.createCriteria(User.class);
// 排序代码
criteria.addOrder(Order.asc("number"));
List<User> ll = criteria.list();
for (User user : ll) {
System.out.println(user.getName());
}*/
//5.统计检索
/*Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(Projections.rowCount());
long ll=(long) criteria.uniqueResult();
System.out.println(ll);*/
tx.commit();
session.close();
}
}
本地SQL检索方法
package cn.com.query;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.com.dao.User;
import cn.com.util.Hibernate_Utils;
public class Demo3 {
/*author:命运的信徒
* date:2018/12/5
* arm:本地SQL检索方法
*/
@Test
public void demo(){
Session session=Hibernate_Utils.openSession();
Transaction tx=session.beginTransaction();
//最底层SQL底层,user是表名不是类名
SQLQuery qq=session.createSQLQuery("select name from user");
List<String> ll=qq.list();
for (String user : ll) {
System.out.println(user);
}
tx.commit();
}
}