hibernate HQL查询、条件查询、SQL查询、外置命名查询(四种查询)
2019-05-30 17:48
381 查看
版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41083009/article/details/90701994
本文章采用测试类学习查询方式
1、HQL查询
(1)用户名属性查询,查询(用户名为小化且id=3)的用户的用户名
// 查询函数 @Test public void getUser1() { Session session = HibernateUtils.getSession();// 获取session对象 // 普通hql查询(用户名为小化且id=3)的用户的用户名(属性)信息 String hql="select username from User where username='小化' and id=3"; @SuppressWarnings("unchecked") List<String> string=session.createQuery(hql).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { String u = string.get(i); System.out.println(u); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(2)模糊查询,查询(用户名为X化)的用户的用户名
@Test public void getUser1() { Session session = HibernateUtils.getSession();// 获取session对象 //普通hql模糊查询 String hql="select username from User where username like '%化'"; @SuppressWarnings("unchecked") List<String> string=session.createQuery(hql).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { String u = string.get(i); System.out.println(u); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(3)使用?占位符方式,查询(用户名为小化且id<4)的用户信息
@Test public void getUser2() { Session session = HibernateUtils.getSession();// 获取session对象 // 使用?占位符来传递参数(位置参数)查询(用户名为小化且id<4)的用户信息 //?表示从哪里开始查询 String hql="from User where username=?0 and id<?1"; @SuppressWarnings("unchecked") List<User> string = session.createQuery(hql). setParameter(0, "小化").setParameter(1, 4).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); if(u.getMyClass()!=null) System.out.println(u.toString()); else System.out.println(u.tooString()); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(4)使用?占位符方式,查询(用户名为X化)的用户信息(模糊查询)
@Test public void getUser2() { Session session = HibernateUtils.getSession();// 获取session对象 //使用?占位符来传递参数(位置参数)查询(用户名为x化)的用户信息(模糊查询) String hql="from User where username like ?1"; @SuppressWarnings("unchecked") List<User> string=session.createQuery(hql) .setParameter(1,"%化").list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); if(u.getMyClass()!=null) System.out.println(u.toString()); else System.out.println(u.tooString()); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(5)使用:命名方式,查询(用户名为小化且id<4)的用户信息
@Test public void getUser3() { // 获取session对象 Session session = HibernateUtils.getSession(); //使用(:命名)方式来传递参数(命名参数) //查询(用户名为小化且id<4)的用户信息 String hql="from User where username=:username and id<:id"; @SuppressWarnings("unchecked") List<User> string=session.createQuery(hql) .setParameter("username","小化"). setParameter("id", 4).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); if(u.getMyClass()!=null) System.out.println(u.toString()); else System.out.println(u.tooString()); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(6)使用:命名方式,查询(用户名为X化)的用户信息(模糊查询)
@Test public void getUser3() { // 获取session对象 Session session = HibernateUtils.getSession(); //使用(:命名)方式来传递参数(命名参数)查询 //(用户名为x化)的用户信息(模糊查询) String hql="from User where username like :username"; @SuppressWarnings("unchecked") List<User> string=session.createQuery(hql).setParameter ("username","%化").list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); if(u.getMyClass()!=null) System.out.println(u.toString()); else System.out.println(u.tooString()); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
2、条件查询
使用criteria方式,查询id<5的用户信息
@Test public void getUser4() { // 获取session对象 Session session = HibernateUtils.getSession(); //使用(criteria)方式查询id小于5的用户信息(条件查询) @SuppressWarnings("deprecation") List<User> string =session.createCriteria(User.class).add (Restrictions.lt("id", 5)).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); System.out.println(u); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
3、SQL查询
使用传统SQL语言方式,查询所有用户信息(所有属性都有数据才能输出)
@Test public void getUser5() { // 获取session对象 Session session = HibernateUtils.getSession(); // 使用sql查询 String sql="select * from user_table"; @SuppressWarnings("unchecked") List<User> string =session.createSQLQuery(sql).addEntity (User.class).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { User u = string.get(i); System.out.println(u.toString()); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
4、外置命名查询
使用该方式需在实体类的映射文件添加如下代码:
<hibernate-mapping package="....."> <query name="external_name1"> <![CDATA[from User where id <?0]]> </query> <query name="external_name2"> <![CDATA[from User where username like :username]]> </query> </hibernate-mapping>
(1)使用外置命名方式,查询id<4的用户信息
@Test public void getUser6() { // 获取session对象 Session session = HibernateUtils.getSession(); //查询id<4的用户信息 @SuppressWarnings("unchecked") List<User> string = session.getNamedQuery ("external_name1").setParameter(0, 4).list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { //String u = string.get(i); User u = string.get(i); System.out.println(u); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
(2)使用外置命名方式,查询(用户名为X明)的用户信息(模糊查询)
public void getUser6() { // 获取session对象 Session session = HibernateUtils.getSession(); //查询(用户名为x明)的用户信息(模糊查询) @SuppressWarnings("unchecked") List<User> string = session.getNamedQuery ("external_name2").setParameter("username","%明").list(); if (string.size() != 0) System.out.println("成功检索所有用户"); else System.out.println("没有该用户哦"); for (int i = 0; i < string.size(); i++) { //String u = string.get(i); User u = string.get(i); System.out.println(u); } HibernateUtils.closeSession(session);// 关闭session }
打印结果:
虽然有点多,但技多不压身嘛。
相关文章推荐
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- Hibernate中HQL命名查询和SQL命名查询
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功
- hibernate查询方式:HQL、SQL、Criteria方法、命名、动态分离查询、例子查询
- 【Java EE (Struts2 + Spring + Hibernate)开发】 :Hibernate(二)之【HQL查询|条件查询|SQL查询】
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
- Hibernate_根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- Hibernate(二)HQL&SQL参数绑定、投影和分页以及命名查询
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
- Hibernate学习32 -- Hibernate查询语言(HQL)6 -- 外置命名查询
- hibernate查询方式:HQL、SQL、Criteria方法、命名、动态分离查询、例子查询
- Hibernate-Criteria查询(3)DetachedCriteria构造查询条件、命名查询、原生SQL、调用存储过程(使用JDBC)
- 【Hibernate步步为营】--hql连接查询及外置命名查询
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- Hibernate(二)HQL&SQL参数绑定、投影和分页以及命名查询
- Hibernate多对多关联映射的HQL中的in条件查询问题
- Hibernate的学习之路十七(HQL条件查询)
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题