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

推荐订阅源

Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
S
Schneier on Security
人人都是产品经理
人人都是产品经理
博客园_首页
L
LangChain Blog
D
Docker
B
Blog
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
C
Check Point Blog
WordPress大学
WordPress大学
博客园 - 聂微东
P
Palo Alto Networks Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
腾讯CDC
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
Help Net Security
Help Net Security
The Last Watchdog
The Last Watchdog
有赞技术团队
有赞技术团队
美团技术团队
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
爱范儿
爱范儿
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
C
Cisco Blogs
P
Proofpoint News Feed
I
Intezer
Last Week in AI
Last Week in AI
The Register - Security
The Register - Security
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Latest news
Latest news
M
MIT News - Artificial intelligence
N
News | PayPal Newsroom
G
Google Developers Blog
Cloudbric
Cloudbric
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recorded Future
Recorded Future
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog

博客园 - 老公鸡

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

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