NHibernate 有好几种数据库查询方式

NHibernate 有好几种数据库查询方式
1、原生SQL
var employeeQuery = Database.Session
	.CreateSQLQuery("select * from Employee where FirstName = ‘John‘")
	.AddEntity(typeof(Employee));
var employees = employeeQuery.List<Employee>();

2、Hibernate Query Language(HQL)HN自己的一条语言,简称HQL

var employeeQuery = Database.Session
	.CreateQuery("select e  from Employee as e");

var employees = Database.Session
	.CreateQuery("select e from Employee as e ")
	.List<Employee>();
//select e from Employee as e where e.Firstname = ‘John‘
var firstName = "John";
var employees = Database.Session
	.CreateQuery("select e from Employee as e where e.Firstname = ‘"
	+ firstName
	+ "‘")
	.List<Employee>();

var employeeQuery = Database.Session
	.CreateQuery("select e from Employee as e where e.Firstname = :firstName");
employeeQuery.SetParameter("firstName", "John");
var employees = employeeQuery.List<Employee>();

3、Criteria API 标准API

using (var transaction = database.Session.BeginTransaction())
{
  var employeeQuery = database.Session.CreateCriteria<Employee>();
  employeeQuery.Add(Restrictions.Eq("Firstname", "john"));
  var employees = employeeQuery.List<Employee>();
  transaction.Commit();
}

using (var transaction = database.Session.BeginTransaction())
{
  var employees = database.Session.CreateCriteria<Employee>()
  .Add(Restrictions.Eq("Firstname", "john"))
  .List<Employee>();
  transaction.Commit();
}

using (var transaction = database.Session.BeginTransaction())
{
 	var employees = database.Session.CreateCriteria<Employee>()
	.Add(Restrictions.Between("DateOfJoining", DateTime.Now.AddYears(-1), DateTime.Now))
  	.List<Employee>();
  	transaction.Commit();
}

4、The QueryOver API
var employees = Database.Session.QueryOver<Employee>()
.Where(x => x.Firstname == "John")
.List<Employee>();

var employees = Database.Session
.QueryOver<Employee>()
.Where(x => x.DateOfJoining > DateTime.Now.AddYears(-1) &&
x.DateOfJoining < DateTime.Now)
.List<Employee>();

5、LINQ
var employees = from e in Database.Session.Query<Employee>()
        where e.Firstname == "John" select e;
var employees = Database.Session.Query<Employee>()
.Where(e => e.Firstname == "John");

var employees = from e in Database.Session.Query<Employee>()
where e.DateOfJoining > DateTime.Now.AddYears(-1) &&
e.DateOfJoining < DateTime.Now
select e;
var employees = Database.Session.Query<Employee>()
.Where(e => e.DateOfJoining > DateTime.Now.AddYears(-1) &&
e.DateOfJoining < DateTime.Now);
时间: 2024-10-11 12:12:54

NHibernate 有好几种数据库查询方式的相关文章

MySql、SqlServer、Oracle 三种数据库查询分页方式

SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活.先看看单条 SQL 语句的分页 SQL 吧.方法1:适用于 SQL Server 2000/2005SELECT TOP 页大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) O

SQL两种简单分页查询方式

以前我们或许都用过了linq的skip and take方式进行分页查询,但是很少自己写sql的分页查询,因为大多数时候,我们都是在调用别人的方法. 最近看到一个文档,感觉方法里面实现的分页查询进入数据库调用的时候,实际最底层调用的还是SQL的分页查询,例如,我们用linq写个分页查询,转成sql表达式后发现: 实际调用的时候,才发现SQL底层是这样进行分页的. 下面,本文主要是介绍两种SQL的分页查询. 一,TOP方式 ----第一种分页查询方式:TOP方式 declare @page int

iBatis.Net(C#)数据库查询

引用请注明http://www.cnblogs.com/13590/archive/2013/03/14/2958735.html  摘要:查询是数据库SQL语言的核心,本文介绍了通过iBatis.Net对数据库的简单查询.条件查询.动态查询和多表查询. 关键词:iBatis.Net:动态查询:多表查询:数据映射 查询是数据库SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句.用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句.而在实际的项目开发

IBatis.Net学习笔记五--常用的查询方式

在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率.在IBatis.Net中提供了方便的数据库查询方式. 在Dao代码部分主要有两种方式:1.查询结果为一个对象:                 ISqlMapper sqlMap = sqlMapDaoSession.SqlMap;                return (Account) sqlMap.QueryForObject("GetAccountViaColumnName", 

转载 50种方法优化SQL Server数据库查询

原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷

Hibernate的Api以及三种查询方式

Hibernate  Api |-- Configuration       配置管理类对象 config.configure();    加载主配置文件的方法(hibernate.cfg.xml) 默认加载src/hibernate.cfg.xml config.configure("cn/config/hibernate.cfg.xml");   加载指定路径下指定名称的主配置文件 config.buildSessionFactory();   创建session的工厂对象 |--

NHibernate应用四:NHibernate的查询方式介绍

NHibernate中提供了三种查询方式:NHibernate 查询语言(HQL,NHibernate Query Language).条件查询(Criteria API,Query By Example(QBE)是Criteria API 的一种特殊情况).原生SQL(Literal SQL,T-SQL.PL/SQL). 2009年,微软发布NHibernate.Linq 1.0 后,NHibernate能通过该DLL支持LINQ.

Oracle 数据库(oracle Database)Select 多表关联查询方式

Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名2>[,…] [WHERE <筛选择条件表达式>] [GROUP BY <分组表达式> [HAVING<分组条件表达式>]] [ORDER BY <字段>[ASC | DESC]] 语句说明: []方括号为可选项 [GROUP BY <分组表达式&g

hibernate的三种查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC, 以及使用原生SQL查询(Session的查询) 1)Query的查询:使用HQL语句或SQL语句完成查询 2)Criteria的查询:通过方法和类中属性的关系,来设置查询条件,完成查询. 3)Session的查询:按主键查询查询,方法为get或load 一.HQL查询 ? HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式. ? H