NHibernate学习 第六天 NHibernate 中的查询
2011-06-10 16:31
363 查看
NHibernate 里面有三种查询方式,分别为
1. 原始SQL语句查询,使用方法为
session.CreateSQLQuery("select Id, u_name, u_pwd, r_id from users").AddEntity(typeof(User)).List<User>();
使用 CreateSQLQuery()方法来实现,在里面有许多要注意的地方。 比如 不能直接调用.List<User>()方法返回值等。
这边有找一个介绍比较详细的网页来讲明就不重复了
http://blog.csdn.net/faye0412/archive/2009/09/26/4596218.aspx
大家可以在这里找到你需要的
2. HQL 查询
使用CreateQuery()方法来实现, HQL 是LINQ的前身,语法类似
return session.CreateQuery("from User").List<User>();
注意:其中 from User 类似于t-SQL语句,User 为实体类名 如果需要使用字段则要换成属性名
http://zifengjiacan.blog.163.com/blog/static/43555122009229115355908/
嘿嘿,又偷懒了
3. Criteria查询
使用CreateCriteria()方法来实现,使用起来感觉挺好的,面向对象咯! 扩展方法的使用级限。《-- 纯个人感觉,不能面对考试以及面试
return session.CreateCriteria(typeof(User)).List<User>();
简单说明,详细请查看其它资料
SetMaxResults:设置返回的最大结果数,可用于分页;
SetFirstResult:设置首个对象返回的位置,可用于分页;
Add:加入条件表达式(expression_r对象),此方法可多次调用以组合多个条件;
AddOrder:加入排序的字段(Order对象);
List:返回满足条件的对象集合。
expression_r是一个abstract(抽象)类,它通过一组static方法实现Factory Method(工厂方法)模式,这些static方法返回的都是expression_r类的子类,下面列出一些常用的:
Eq:这是一个相等判断的表达式;
Like:这是一个like判断的表达式;
Gt:这是一个大于判断的表达式;
And:这是两个表达式And操作后的表达式;
Or:这是两个表达式Or操作后的表达式;
Between:这是一个范围筛选的条件表达式,在两个数之间的范围。
In:这也是一个范围筛选的条件表达式,在多个离散的值中进行筛选。
下面以几个例子来说明Criteria数据加载的用法:
1. 取得用户名(username)为billy的用户对象:
expression_r ex = expression_r.Eq( "Username", "billy" );
IList users = session.CreateCriteria(typeof(User)).Add( ex ).List();
2.取得用户名(username)为billy, 密码为123456的用户对象
expression_r ex = expression_r.And( expression_r.Eq("Username", "billy"),
expression_r.Eq("Password", "123456") );
IList users = session.CreateCriteria(type(User)).Add( ex ).List();
3. 取得数据中第20-40的用户对象。
IList users = session.CreateCriteria(typeof(User)) .SetFirstResult(20).SetMaxResults(40) .List();
对于SQLSERVER,数据定位采用的是IDataReader前滚至firstResult处,然后取maxResults条记录。
4. 取得按注册日期(Regdate)降序排序后的用户对象.
ICriteria c = session.CreateCriteria(typeof(User));
IList users = c.AddOrder( Order.Desc("Regdate") ).List();
大家喜欢哪一种自己选择就行。
1. 原始SQL语句查询,使用方法为
session.CreateSQLQuery("select Id, u_name, u_pwd, r_id from users").AddEntity(typeof(User)).List<User>();
使用 CreateSQLQuery()方法来实现,在里面有许多要注意的地方。 比如 不能直接调用.List<User>()方法返回值等。
这边有找一个介绍比较详细的网页来讲明就不重复了
http://blog.csdn.net/faye0412/archive/2009/09/26/4596218.aspx
大家可以在这里找到你需要的
2. HQL 查询
使用CreateQuery()方法来实现, HQL 是LINQ的前身,语法类似
return session.CreateQuery("from User").List<User>();
注意:其中 from User 类似于t-SQL语句,User 为实体类名 如果需要使用字段则要换成属性名
http://zifengjiacan.blog.163.com/blog/static/43555122009229115355908/
嘿嘿,又偷懒了
3. Criteria查询
使用CreateCriteria()方法来实现,使用起来感觉挺好的,面向对象咯! 扩展方法的使用级限。《-- 纯个人感觉,不能面对考试以及面试
return session.CreateCriteria(typeof(User)).List<User>();
简单说明,详细请查看其它资料
SetMaxResults:设置返回的最大结果数,可用于分页;
SetFirstResult:设置首个对象返回的位置,可用于分页;
Add:加入条件表达式(expression_r对象),此方法可多次调用以组合多个条件;
AddOrder:加入排序的字段(Order对象);
List:返回满足条件的对象集合。
expression_r是一个abstract(抽象)类,它通过一组static方法实现Factory Method(工厂方法)模式,这些static方法返回的都是expression_r类的子类,下面列出一些常用的:
Eq:这是一个相等判断的表达式;
Like:这是一个like判断的表达式;
Gt:这是一个大于判断的表达式;
And:这是两个表达式And操作后的表达式;
Or:这是两个表达式Or操作后的表达式;
Between:这是一个范围筛选的条件表达式,在两个数之间的范围。
In:这也是一个范围筛选的条件表达式,在多个离散的值中进行筛选。
下面以几个例子来说明Criteria数据加载的用法:
1. 取得用户名(username)为billy的用户对象:
expression_r ex = expression_r.Eq( "Username", "billy" );
IList users = session.CreateCriteria(typeof(User)).Add( ex ).List();
2.取得用户名(username)为billy, 密码为123456的用户对象
expression_r ex = expression_r.And( expression_r.Eq("Username", "billy"),
expression_r.Eq("Password", "123456") );
IList users = session.CreateCriteria(type(User)).Add( ex ).List();
3. 取得数据中第20-40的用户对象。
IList users = session.CreateCriteria(typeof(User)) .SetFirstResult(20).SetMaxResults(40) .List();
对于SQLSERVER,数据定位采用的是IDataReader前滚至firstResult处,然后取maxResults条记录。
4. 取得按注册日期(Regdate)降序排序后的用户对象.
ICriteria c = session.CreateCriteria(typeof(User));
IList users = c.AddOrder( Order.Desc("Regdate") ).List();
大家喜欢哪一种自己选择就行。
相关文章推荐
- NHIbernate学习之旅【四】——非查询及事务
- NHibernate系列学习(三)-条件查询Criteria
- NHIbernate学习之旅【六】——关系查询
- 一步步学习NHibernate(9)——连接查询和子查询(1)
- 一步步学习NHibernate(7)——HQL查询(1)
- 18.02.21,web学习第六十天,bos第六天,文件下载,分页查询死循环,指定hib对象封装形式
- 一步步学习NHibernate(8)——HQL查询(2)
- Nhibernate系列学习之(三) Criteria查询表达式增删改查
- 一步步学习NHibernate(10)——连接查询和子查询(2)
- NHibernate3.2学习笔记-几种查询方式
- [Oracle 学习笔记] 03 单表查询
- T-SQL学习:将一列数据查询显示成一行
- jQuery Mobile 学习查询资料网站
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- 学习MongoDB 四: MongoDB查询(一)
- SQL查询刚開始学习的人指南读书笔记(一)关系数据库和SQL介绍
- Mysql数据库学习(三):表的crud操作、完整性约束、select各种查询
- JAVA学习笔记之常用列表(备查询)
- 2017.6.29 学习记录 MySql的运用查询
- Mybatis学习笔记(十三)【多对多查询】