[应用架构] HQL 查询方式(传统方式和占位方式)

原创 2012年03月22日 08:57:49
在编写HQL语句的时候,有两种方式来写查询语句,下面我介绍两种查询方式。
1.传统方式进行查询
  1. String hql = " from User user  where user.department='"+department+"' and user.userName like '%"+userName+"%'"; // where user.department  = '"+department+"' order by user.department desc";
  2.          List<User> vList = this.getHibernateTemp().find(hql);
复制代码


2.占位方式,占位方式没有像传统方式那样把所有代码写在一条hql语句中,它将语句,参数,参数值三部分开来写,这样可读性比较好。这种方式建议采用。如下所示:
  1. //使用占位符的方式
  2.                      String hql = " from User user where user.department = :department  and user.userName like  :userName  ";
  3.                      String[] params = {"department","userName"};
  4.                        
  5.                 Object[] args = { department,"%"+userName+"%" };
  6.                         List<User> vList = getHibernateTemp().findByNamedParam(hql,  params, args);
复制代码

like语句用法比较典型。可以通过上面的例子得到其具体用法.

3.下面再采用一种方式来进行,不过这种方式在条件查询参数比较多的情况下不采用,如下面所示:
  1.   List<User> userList = super.findAll(User.class);


  2.   // 按姓名查询,模糊查询
  3.   if (!userName.isEmpty()) {

  4.    for (int i = 0; i < userList.size(); i++) {
  5.     
  6.     String tempUserName = userList.get(i).getUserName();

  7.     int index=tempUserName.indexOf(userName);

  8.     //System.out.println("%%%%%%%%%%:\t"+index);
  9. //                                if (index != 0 ) {

  10.      userList.remove(i);
  11.      i--;
  12.     }
  13.    }
  14.   }

  15.   // 按部门查询
  16.   if (!department.isEmpty()) {
  17.    for (int i = 0; i < userList.size(); i++) {
复制代码
注意:这种方式在参数查询比较多的情况不采用,而且第一次查询出所有的记录,包括不符合条件的也查询出来,然后再通过if语句过滤,这样占用太多时间。而上面的1,2方法正是对其所进行的改进。

(完,待续...........)
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

18、关于drools Web版本kie-wb传统方式安装

第一步:安装jdk   这个不多说了。网上很多的方式。 第二步:下载tomcat 7 从官方下载就可以大小差不多是8M  并放到虚拟机上进行解压操作。最好修名为tomcat7 后面有用 第三步:引入相...

使用Spring(17)Spring中的定时调度(Scheduling)--传统方式创建Quartz任务

1.下载Quartz jar包

SSH之传统方式接入分布式会话(Spring Session)篇

背景由于项目业务发展越来越快,开发人员越来越多;导致传统一个项目模块开发方式效率低下并且系统性能瓶颈凸显慢慢需要考虑采用分布式/微服务体系进行解耦解决各种性能与效率的问题;但在分布式环境中会碰到各种各...

Struts2上面用传统方式来传递JSON

最近工作遇到JSON传值的问题,Struts2里面已经有对JSON配置的插件,暂时还没有去做实验,想用最传统的方式去传递JSON. JSON(JavaScript Object Notation...

java基础——多线程(两种传统方式)

一、创建线程的两种传统方式 1、在Thread子类覆盖的run方法中编写运行代码 new Thread(){ public void run(){ while(true){ try...

JSP+Servlet+JavaBean传统方式实现简易留言板制作(注册、登录、留言)

学JavaEE也有一段时间了,跟着老师和教材做了不少东西,但是一直以来没时间写博客,今天就把以前写的一个简易留言板简单发一下吧。 开发工具 主要用的开发工具为 MyEclipse(2014、201...

传统方式实现三个线程之间的通信: notify与notifyAll

使用notify方法只唤醒一个线程(任意唤醒一个), 而notifyAll则唤醒该对象监视器上等待的所有线程,被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争 /////////...

java创建线程的两种传统方式

1)继承Thread,重写其的run方法 2)实现Runnable接口 代码如下:   package com.study; /** * * @ClassName: ThreadT...

SSH之Spring传统方式接入YAML管理各环境配置方式(从Spring Boot移植)

Spring YAML配置管理,Spring Boot配置管理,Spring配置管理
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)