复杂的sql条件

上传人:mg****85 文档编号:34559325 上传时间:2018-02-25 格式:DOC 页数:4 大小:42.50KB
返回 下载 相关 举报
复杂的sql条件_第1页
第1页 / 共4页
复杂的sql条件_第2页
第2页 / 共4页
复杂的sql条件_第3页
第3页 / 共4页
复杂的sql条件_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《复杂的sql条件》由会员分享,可在线阅读,更多相关《复杂的sql条件(4页珍藏版)》请在金锄头文库上搜索。

1、复杂的 SQL 条件概述什么是 Nutz.Dao 中的复杂 SQL 条件 对于 Nutz.Dao 来说,它本质上就是将你的 Java 对象转化成 SQL,然后交给 JDBC 去执行。 而 SQL 中,当执行数据删除和查询操作时,最常用的就是 WHERE 关键字。 WHERE 关键字后面的就是所谓的复杂查询条件 Nutz.Dao 将如何如何使用这个条件 Dao 接口的 clear 方法和 query 方法的第二个参数,就是为了生成 WHERE 后面那段字符串设计的 这个参数是一个 org.nutz.dao.Condition 接口的实现类 通过该接口的 toString(org.nutz.dao

2、.entity.Entity) 方法, Nutz.Dao 将获得 WHERE 后面那段字符串 当然也包括 ORDER BY Condition 接口 这个接口只有一个方法 toString(Entity entity) o 这个方法带一个参数 org.nutz.dao.entity.Entity o 通过这个参数,实现者可以获得当前需要操作的实体的配置信息 o 当然,如果你不需要的话,你可以不理睬这个参数 Nutz.Dao 会将 toString(Entity entity) 的返回直接拼接到 SQL 的 WHERE 关键字后面 o 如果你返回的字符串以 WHERE 或者 ORDER BY 开

3、头,它会直接使用,否则会补上一个 WHERE 关键字 o 这个判断会忽略前后空白以及大小写 Nutz 给你的快速实现 如果你的数据库字段被假设不会发生变化,用直接硬编码是个很好的选择 如果在开发期,你的数据库字段变化非常频繁,用 Cnd 工具类则是更好的选择 直接硬编码最简单直接的方法就是直接输出 WHERE 关键字后面的 SQL 代码了。比如查询一个 Person 对象List crowd = dao.query(Person.class, Cnd.wrap(name LIKE J% AND age20), null);这句话,就会将所有名称以 J 开头,并且年龄超过 20 岁的人全部查询出

4、来。参看 Nutz.Dao 入门针对 Person 对象的描述,实际上,上面那句话执行的 SQL 代码为:SELECT * FROM t_person WHERE name LIKE J% AND age20;当然你要是写Cnd.wrap(name LIKE J% AND age20 ORDER BY name ASC);就会按照 name 字段排序。一个友好一些的工具类 - Cnd有些情况,数据库中的字段同 Java 对象中的字段并不同名,所以就需要给 Java 字段上的数据库字段注解加上参数 Column(数据库字段名)如果你通过 Cnd.wrap() 硬编码某个字段,那么当这个字段数据库

5、字段名发生改变时,你就需要改动很多。因此你希望仅仅将对于数据库的变动限制在 Java 对象的源文件里所以 Nutz 提供了 Cnd.where() 方法Condition c = Cnd.where(age,30).and(name, LIKE, %K%).asc(name).desc(id);这个条件将生成 SQL WHERE age30 AND name LIKE %K% ORDERBY name ASC, id DESC你也可以嵌套表达式SqlExpressionGroup e1 = Cnd.exps(name, LIKE, P%).and(age, , 20);SqlExpressio

6、nGroup e2 = Cnd.exps(name, LIKE, S%).and(age, 20) OR (name LIKE S% AND age list = dao.query(MyObj.class, cri, null);Criteria 的 where() 函数返回的是 SqlExpressionGroup,主要由它来提供各种 SQL 条件的组合方法。这里需要给出一点提示,比如方法名 andGT,表示的是 andGreatThan,即 大于 的意思,同理: LT : 小于 (LessThan) GTE : 大于等于 (GreatThanEquale) LTE : 小于等于 (LessThanEquale)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号