Bootstrap

java+criteriaquery_Hibernate Criteria query 实现模糊查询

Hibernate

Criteria query 实现模糊查询

hibernate有三种查询方式:Hibernate Query Language (HQL)、Criteria query

、Native SQL query 。其中Criteria

query最适合查询条件数量不定的模糊查询。一下通过一个例子说明用Criteria

query实现模糊查询的方法。

1.Oracle数据库表mytable,设有2个字段name,age;

2.查询条件输入页面querySet.jsp;

3.查询结构输出页面queryResult.jsp;

4.struts1的ActionForm:queryForm.java;

5.Action:QueryAction.java;

6.Pojo:MyTable.java;

7.myTable.hbn.xml;

8.还有struts配置文件和hibernate配置文件等。

querySet.jsp的内容如下

method="post">

请输入查询条件:

姓名:

name="name"/>

年龄:

name="age"/>

value="查询"/>

效果如下:

a4c26d1e5885305701be709a3d33442f.png

用户在界面中输入查询条件,也可以不输入任何内容。如果用户在姓名栏中输入内容,则在表中查询所有name字段中包含输入字符的记录;如果用户在年龄栏中输入数值,则查询age等于输入值得记录;如果用户没有输入任何内容,将查询所有记录。

QueryAction.java的主要内容如下:

QueryForm queryForm =

(QueryForm) form;

String name =

queryForm.getName();

String sAge =

queryForm.getAge();

Session s =

HibernateSessionFactory.getSession();

Criteria criteria =

s.createCriteria(MyTable.class);

if (name != null

&& name.trim().length()

> 0) {

Criterion

criterion1 = Expression.like("name", "%"+name.trim()+"%");

criteria.add(criterion1);

}

if (age != null

&& age.trim().length()

> 0) {

int

age=Integer.parseInt(sAge);

Criterion

criterion2 = Expression.eq("age", age);

criteria.add(criterion2);

}

criteria.addOrder(Order.asc("name"));

criteria.addOrder(Order.des("age"));

List myTables=criteria.list();

;