public static void main(String[] args) {<o:p></o:p>
<o:p></o:p>
Session session = null;<o:p></o:p>
Transaction tx = null;<o:p></o:p>
List list = null;<o:p></o:p>
Criteria criteria = null;<o:p></o:p>
<o:p> </o:p>
try {<o:p></o:p>
<o:p> </o:p>
session = HibernateSessionFactory.getSession();<o:p></o:p>
tx = session.beginTransaction();<o:p></o:p>
<o:p> </o:p>
DetachedCriteria detachedCriteria = DetachedCriteria<o:p></o:p>
.forClass(InfoTab.class);<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
String sql=" 1=1 ";<o:p></o:p>
<o:p></o:p>
Integer pareaId = 0; // 父地区;<o:p></o:p>
Integer careaId = 0; // 子地区;<o:p></o:p>
Integer categoryId = 0; // 类别;<o:p></o:p>
String infoPrivider = "中介"; // 来源;<o:p></o:p>
String houseType= "地下室"; // 房屋类型;<o:p></o:p>
Integer hxBedRoom=0; // 室;<o:p></o:p>
Integer hxLivingRoom=0; // 厅;<o:p></o:p>
<o:p></o:p>
String hzHouseStatus="有房出租"; // 合租类型;<o:p></o:p>
String hzRequestSex="男"; // 性别要求;<o:p></o:p>
String fixUp="尚未"; // 装修程度;<o:p></o:p>
Integer lcHeightMolecuse=0; // 楼层;<o:p></o:p>
String orientation="东南"; // 朝向要求;<o:p></o:p>
Integer buildArea=2000; // 建筑面积;<o:p></o:p>
Integer useArea=80; // 使用面积;<o:p></o:p>
Integer rentalDigit=2000; // 租金/价格;<o:p></o:p>
String title= "出租"; // 标题;<o:p></o:p>
<o:p></o:p>
if(pareaId!=0)<o:p></o:p>
{<o:p></o:p>
sql+="pareaId=" + pareaId;<o:p></o:p>
}<o:p></o:p>
if(careaId!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and careaId=" + careaId;<o:p></o:p>
}<o:p></o:p>
if(categoryId!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and categoryId=" + categoryId;<o:p></o:p>
}<o:p></o:p>
if(!infoPrivider.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and infoPrivider='" + infoPrivider + "'";<o:p></o:p>
}<o:p></o:p>
if(!houseType.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and houseType='" + houseType +"'";<o:p></o:p>
}<o:p></o:p>
if(hxBedRoom!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and hxBedRoom=" + hxBedRoom;<o:p></o:p>
}<o:p></o:p>
if(hxLivingRoom!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and hxLivingRoom=" + hxLivingRoom;<o:p></o:p>
}<o:p></o:p>
if(!hzHouseStatus.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and hzHouseStatus='" + hzHouseStatus + "'";<o:p></o:p>
}<o:p></o:p>
if(!hzRequestSex.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and hzRequestSex='" + hzRequestSex +"'";<o:p></o:p>
}<o:p></o:p>
if(!fixUp.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and fixUp='" + fixUp + "'";<o:p></o:p>
}<o:p></o:p>
if(lcHeightMolecuse!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and lcHeightMolecuse=" + lcHeightMolecuse;<o:p></o:p>
}<o:p></o:p>
if(!orientation.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and orientation='" + orientation + "'";<o:p></o:p>
}<o:p></o:p>
if(buildArea!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and buildArea=" + buildArea;<o:p></o:p>
}<o:p></o:p>
if(useArea!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and useArea=" + useArea;<o:p></o:p>
}<o:p></o:p>
if(rentalDigit!=0)<o:p></o:p>
{<o:p></o:p>
sql+=" and rentalDigit=" + rentalDigit;<o:p></o:p>
}<o:p></o:p>
if(!title.equals(""))<o:p></o:p>
{<o:p></o:p>
sql+=" and title like '%" + title + "%'";<o:p></o:p>
}<o:p></o:p>
sql+=" order by id desc";<o:p></o:p>
<o:p></o:p>
System.out.println(sql);<o:p></o:p>
<o:p> </o:p>
detachedCriteria.add(Restrictions.sqlRestriction(sql));<o:p></o:p>
<o:p> </o:p>
criteria = detachedCriteria.getExecutableCriteria(session);<o:p></o:p>
<o:p> </o:p>
list = criteria.list();<o:p></o:p>
<o:p></o:p>
for(int i=0;i<list.size();i++)<o:p></o:p>
{<o:p></o:p>
InfoTab infoTab = (InfoTab)list.get(i);<o:p></o:p>
System.out.println(infoTab.getTitle() +" "+ infoTab.getCategoryId() +" "+ infoTab.getPareaName() +" "+ infoTab.getCareaName() +" " + infoTab.getHouseType() +" " + infoTab.getInfoPrivider());<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
tx.commit();<o:p></o:p>
<o:p> </o:p>
} catch (HibernateException he) {<o:p></o:p>
he.printStackTrace();<o:p></o:p>
}<o:p></o:p>
}
出处http://maomao.blog.51cto.com/115985/33883
分享到:
相关推荐
总的来说,“hibernate hql where语句拼接工具类”是为了简化和规范化在Hibernate中构建带有动态条件的HQL查询的过程,提高代码的可读性和可维护性。通过这样的工具类,开发者可以更方便地根据业务需求构建复杂的...
在实际开发过程中,为了实现动态SQL查询的功能,开发者常常需要根据不同的条件来构造SQL语句。这种根据条件动态生成SQL的过程就被称为SQL语句拼接。这种方式尤其适用于那些查询条件不确定或可变的场景,例如用户可以...
条件判断并拼接SQL语句 ``` - **执行查询**:通过`Session`的`createSQLQuery`方法创建`SQLQuery`对象,并设置结果转换方式,最后执行查询并返回结果。 ```java SQLQuery query1 = session.createSQLQuery(sql);...
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
4. 使用ORM(对象关系映射)框架,如Hibernate或Entity Framework,它们会自动处理SQL拼接和安全问题。 5. 避免在前端暴露敏感信息,如数据库结构、表名或字段名。 综上所述,"前台拼接SQL语句"是一个重要的安全...
在执行`createCriteria()`或`createCriteriaJoin()`等方法时,Hibernate会构建一个表示查询条件的抽象语法树(AST)。`org.hibernate.criterion`包中的类如`DetachedCriteria`、`Expression`等用于构建这些条件。...
Hibernate 的核心功能之一是提供了一套强大的查询接口和方法,包括基于对象的查询、SQL 查询和 HQL (Hibernate Query Language) 查询等。本文将详细介绍 Hibernate 提供的几种查询方式及其应用场景。 #### 二、重要...
在Java持久化框架Hibernate中,结构化查询是其强大功能之一,它允许开发者以面向对象的方式构建复杂的SQL查询。Criteria API就是实现这一功能的核心组件,它提供了一种更安全、可读性更强的方式来代替传统的HQL...
1. **参数化查询**:使用预编译的SQL语句,将用户输入作为参数传递,而不是直接拼接在SQL字符串中。例如,使用ORM框架(如Hibernate、Entity Framework)或数据库提供的API(如PDO、PreparedStatement)。 2. **输入...
简洁明了,类似于hibernate的criteria,不依赖其他任何框架和包,还具备防注入能力。我从githug找到一个原始版本,功能不完善且太复杂。我fork了自己的一个版本,有高手可以跟进下...
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
这样的方式,Hibernate会自动处理参数,避免了直接将用户输入拼接到SQL字符串中。 2. **对参数位置进行绑定**: 类似于上一种方法,但不指定参数名,而是根据参数位置设置值。例如: ```java Query query = ...
在SQL编程中,通常我们需要动态构建SQL语句来适应不同的查询条件。早期的开发实践中,开发者经常使用`StringBuffer`或`StringBuilder`来拼接这些条件,但这并不是一个高效且安全的方法。本话题将深入探讨如何避免...
总的来说,JPA分页查询和条件分页查询为开发者带来了极大的便利,它减少了对SQL的直接操作,提高了代码的可读性和可维护性。通过合理地运用Spring Data JPA的特性,可以构建出高效、灵活的数据库访问层。在设计和...
Hibernate提供Criteria API,允许开发者在运行时构建查询条件,实现动态SQL。Criteria API基于对象的API,可以更灵活地创建查询。 2.2 HQL(Hibernate Query Language) HQL是Hibernate自己的查询语言,类似SQL但...
在这个“Hibernate查询映射试验”项目中,你可能会遇到如何配置SessionFactory、如何创建和执行HQL/Criteria查询、如何处理关联映射(如一对一、一对多、多对多)、如何使用事务管理等实践环节。理解并熟练掌握这些...
在 Hibernate 中进行查询是其核心功能之一,本文将详细介绍 Hibernate 的几种查询方式,包括 HQL (Hibernate Query Language) 查询、QBC (Query By Criteria) 查询以及 QBE (Query By Example) 查询,并结合示例代码...
框架如Hibernate、MyBatis等在设计时已考虑了SQL注入问题,它们会自动处理预编译语句和参数绑定,减少开发者的安全顾虑。 6. **最小权限原则**: 数据库连接应使用具有最小权限的账户,这样即使发生SQL注入,攻击...
Criteria API 是一种基于对象的查询方式,可以动态构建查询条件,避免了SQL拼接带来的问题。HQL则是面向对象的查询语言,类似于SQL,但更贴近于Java对象模型,使得查询更为直观。 4. **缓存机制** Hibernate 3.0 ...
虽然 iBatis 在某些方面与 Hibernate 类似,但它们之间的主要区别在于 iBatis 提供了更细粒度的 SQL 控制能力,这使得 iBatis 在复杂查询或性能敏感的应用场景中更具优势。 ### 二、动态 SQL 的概念 在实际应用中...