您的位置:首页 > 数据库

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
}

打印结果:

虽然有点多,但技多不压身嘛。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐