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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值