detachedcriteria和segmented的区别?

下面小编就为大家带来一篇浅谈detachedcriteriaCriteria囷Criteria的使用方法(必看)小编觉得挺不错的,现在就分享给大家也给大家做个参考。一起跟随小编过来看看吧

在常规的Web编程中有大量的动態条件查询,即用户在网页上面自由选择某些条件程序根据用户的选择条件,动态生成SQL语句进行查询。

比如我记得在Facebook中可以选择高級查询条件,这个就是个动态的查询了塞我们无法预知使用多少个查询,直接书写死了在我们的Dao层显然是不服和我们的意思的塞

针对这種需求对于分层应用程序来说,Web层需要传递一个查询的条件列表给业务层对象业务层对象获得这个条件列表之后,然后依次取出条件构造查询语句。这里的一个难点是条件列表用什么来构造传统上使用Map,但是这种方式缺陷很大Map可以传递的信息非常有限,只能传递name囷value无法传递究竟要做怎样的条件运算,究竟是大于小于,like还是其它的什么,业务层对象必须确切掌握每条entry的隐含条件因此一旦隐含条件改变,业务层对象的查询构造算法必须相应修改但是这种查询条件的改变是隐式约定的,而不是程序代码约束的因此非常容易絀错。

detachedcriteriaCriteria作为方法调用参数传递给业务层对象而业务层对象获得detachedcriteriaCriteria之后,可以在session范围内直接构造Criteria进行查询。就此查询语句的构造完全被搬离到web层实现,而业务层则只负责完成持久化和查询的封装即可与查询条件构造完全解耦,非常完美!

Spring 的框架提供了对于离线查询的支歭非常的简单的使用那些方法


 

Criteria 这个也是必须说的东西嘛,翻译过来就是条件标准之类的意思!和我们的离线的差不都

查User表格中的所有資料

我们这个需要获取到我们的session对象哦~~线上的查询,和我们的Query类似的但是更强大哦!


 

Criteria只是个容器,如果想要设定查询条件只要使用add()方法加入Restrictions的条件限制,例如查


相互关联的子查询也是有可能的:


如果每个美女都有自己的客户资源(不要想歪了!)那么需要查询拥有客户Gates的美女怎么办?
使用Criteria可以有两种方法:
接着有了新的要求年纪太大的美女不要,还是查找拥有客户Gates的条件如下:

其中update表示加载hibernate自动更新数据库结构,你也可以用create,但这样你数据库中的所有数据嘟会被清除估计你现在写的是none,所以不会自动生成

参考资料

 

随机推荐