1.Query
【查询所有】
QueryTest1.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest1 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 查询所有
*/
Query query = session.createQuery("from User");
List<User> userList = query.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【条件查询1】
?作为参数,索引从0开始。
QueryTest2.java
package zh.hibernate.test;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest2 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 条件查询
*/
Query query = session.createQuery("from User where username=?");
//Query query = session.createQuery("from User u where u.username=?");// 或者起别名
query.setParameter(0, "小龙女");// ?从索引0开始
User user = (User) query.uniqueResult();// 单结果查询
System.out.println(user);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【条件查询2】
:x形式,x作为参数。
package zh.hibernate.test;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest3 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 条件查询2
*/
Query query = session.createQuery("from User where uid=:x and username=:y");
query.setInteger("x", 4);// 为参数x赋值
query.setString("y", "小龙女");// 为参数y赋值
User user = (User) query.uniqueResult();// 单结果查询
System.out.println(user);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【模糊查询】
QueryTest4.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest4 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 模糊查询
*/
Query query = session.createQuery("from User where username like ?");
query.setParameter(0, "%蓉%");
List<User> userList = query.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【排序查询】
QueryTest5.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest5 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 排序查询
*/
Query query = session.createQuery("from User order by uid desc");// 降序
List<User> userList = query.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【分页查询】
QueryTest6.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest6 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 分页查询
*/
Query query = session.createQuery("from User");
query.setFirstResult(0);// 从表的第一行开始
query.setMaxResults(2);// 查询2条记录
List<User> userList = query.list();// 多结果查询
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【投影查询】
QueryTest7.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest7 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 投影查询
*/
Query query = session.createQuery("select username from User");
List<Object> list = query.list();
for(Object obj : list){
System.out.println(obj);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【聚合函数】
QueryTest8.java
package zh.hibernate.test;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.utils.HibernateUtils;
public class QueryTest8 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 聚合函数
*/
Query query = session.createQuery("select count(*) from User");
Object result = query.uniqueResult();// 查询结果实际是Long类型
Long count = (Long) result;
System.out.println(count);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
2.Criteria
【查询所有】
CriteriaTest1.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest1 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 查询所有
*/
Criteria criteria = session.createCriteria(User.class);
List<User> userList = criteria.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【条件查询】
CriteriaTest2.java
package zh.hibernate.test;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest2 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 条件查询
*/
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("uid", 4));// 添加条件:属性uid=4
criteria.add(Restrictions.eq("username", "小龙女"));// 添加条件:属性username=小龙女
User user = (User) criteria.uniqueResult();
System.out.println(user);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【模糊查询】
CriteriaTest3.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest3 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 条件查询
*/
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.like("username", "%龙%"));// 添加条件:属性username like '%龙%'
List<User> userList = criteria.list();
System.out.println(userList);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【分页查询】
CriteriaTest4.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest4 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 分页查询
*/
Criteria criteria = session.createCriteria(User.class);
criteria.setFirstResult(0);// 从表的第一行开始
criteria.setMaxResults(3);// 查询3条记录
List<User> userList = criteria.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【排序查询】
CriteriaTest5.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest5 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 排序查询
*/
Criteria criteria = session.createCriteria(User.class);
criteria.addOrder(Order.desc("uid"));// 按照uid降序
List<User> userList = criteria.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【统计查询】
CriteriaTest6.java
package zh.hibernate.test;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projections;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest6 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 统计查询
*/
Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(Projections.rowCount());//查询有多少行
Object result = criteria.uniqueResult();
Long count = (Long)result;
System.out.println(count);
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
【离线查询】
CriteriaTest7.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class CriteriaTest7 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
/**
* 离线查询方式
*/
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
List<User> userList = criteria.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
3.SQLQuery
SQLQueryTest1.java
package zh.hibernate.test;
import java.util.Arrays;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class SQLQueryTest1 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
SQLQuery sqlQuery = session.createSQLQuery("select * from t_user where uid >1");
List<Object[]> list = sqlQuery.list();// 数组 形式的结果
for(Object[] array : list){
System.out.println(Arrays.toString(array));
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
SQLQueryTest2.java
package zh.hibernate.test;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import zh.hibernate.entity.User;
import zh.hibernate.utils.HibernateUtils;
public class SQLQueryTest2 {
public static void main(String[] args) {
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();// 开启事务
SQLQuery sqlQuery = session.createSQLQuery("select * from t_user where uid >1");
// 调用此方法,便会将数组形式的结果封装到对象中
sqlQuery.addEntity(User.class);
List<User> userList = sqlQuery.list();
for(User user : userList){
System.out.println(user);
}
transaction.commit();// 提交事务
} catch (Exception e) {
transaction.rollback();// 回滚事务
} finally {
session.close();// 关闭session
sessionFactory.close();// 实际开发中,不需要关闭
}
}
}
4.多表查询
内连接:查询结果每一行是数组
迫切内连接:查询结果每一行是对象。
左外连接:查询结果每一行是数组。
迫切左外连接:查询结果每一行是对象。
右外连接:查询结果每一行是数组。
无迫切右外连接。