惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
V
V2EX
Jina AI
Jina AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
量子位
L
LangChain Blog
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
腾讯CDC
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss

博客园 - 老公鸡

sharepoint 2010? Jsp中使用数据库连接池. MVC2 学习之 UrlRouting Oracle 基础学习之索引 Oracle基础学习之函数 Oracle 基本操作之sql语句 Oracle基本操作 Oracle 数据库学习一 小黑日记三 结束了 mvc 3 学习 第一天 准备 小黑 成长日记第二天 2011年6月15日,同事捡了一只小猫回来了 NHibernate 学习 第十二天 存储过程的使用 NHibernate 学习 第十一天 对多对的关系处理 NHibernate 学习 第十天 一对多的外键关系处理 NHibernate 学习 第九天 外键关系的处理之一对一 NHibernate学习 第八天 组件的运用 NHibernate学习 第七天 其它的学习资料 NHibernate 学习第五天 用户表的增,删,改,查
NHibernate学习 第六天 NHibernate 中的查询
老公鸡 · 2011-06-10 · via 博客园 - 老公鸡

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

大家喜欢哪一种自己选择就行。