NHibernate3.2学习笔记-几种查询方式
一、开发环境
数据库:SQLServer2008
编译器:VS2010
.Net版本:.Net Framework 4.0
二、开发过程
1.项目结构
承接上一篇
2.执行sql语句
(1)基本语法
static void ExecuteSql()
{
string str = "select * from T_Product";
ISQLQuery query = session.CreateSQLQuery(str).AddEntity(typeof(Product));
IList<Product> list = query.List<Product>();
Console.WriteLine(list.Count);
}
3.执行hql语句
(1)基本语法
static void ExecuteHql()
{
string str = "from Product a where a.Id >:pId";
IList<Product> list = session.CreateQuery(str).SetInt32("pId", ).List<Product>();
Console.WriteLine(list.Count);
}
(2)返回多个不确定类型的值
static void ExecuteHql2()
{
string str = "select a.Name,count(a.Name) from Product a group by a.Name";
//返回的两个不同对象类型,用对象集合保存
IList<object[]> list = session.CreateQuery(str).List<object[]>();
foreach (object[] obj in list)
{
string msg = string.Format("【" + obj[] + "】出现了【" + obj[] + "】次");
Console.WriteLine(msg);
}
}
(3)返回确定类型的值
static void ExecuteHql3()
{
string str = "select distinct a.Name from Product a";
IList<string> list = session.CreateQuery(str).List<string>();
Console.WriteLine(list.Count);
}
4.执行Linq语句
(1)基本语法
static void ExecuteLinq()
{
IList<Product> list = session.QueryOver<Product>().Where(a=>a.Id > ).List();
decimal maxUnitPrice = (from s in list select s.UnitPrice).Max();
Console.WriteLine(maxUnitPrice);
}
5.使用Criteria方法
(1)基本语法
static void ExecuteCriteria()
{
ICriteria criteria = session.CreateCriteria(typeof(Product));
IList<Product> list = criteria.List<Product>();
Console.WriteLine(list.Count);
}
(2)常用方法1
static void ExecuteCriteria2()
{
ICriteria criteria = session.CreateCriteria(typeof(Product));
criteria.Add(Expression.Lt("Id", ));
criteria.Add(Expression.Like("Name", "Apple", MatchMode.Anywhere));
IList<Product> list = criteria.List<Product>();
Console.WriteLine(list.Count);
}
(3)常用方法2
static void ExecuteCriteria3()
{
ICriteria criteria = session.CreateCriteria(typeof(Product));
criteria.Add(Expression.Between("UnitPrice", , ));
criteria.Add(Expression.In("Id", new int[] { , ,, , }));
criteria.Add(Expression.Not(Expression.Eq("Id", )));
IList<Product> list = criteria.List<Product>();
Console.WriteLine(list.Count);
}
(4)使用类
static void ExecuteCriteria4()
{
ICriteria criteria = session.CreateCriteria(typeof(Product));
Product model = new Product();
model.Id = ;
model.Name = "Apple";
model.UnitPrice = 2.60m;
criteria.Add(Example.Create(model));
IList<Product> list = criteria.List<Product>();
Console.WriteLine(list.Count);
}
NHibernate3.2学习笔记-几种查询方式的更多相关文章
- [SAM4N学习笔记]按键程序(查询方式)
一.准备工作: 将上一节搭建的工程复制一份,命名为"5.key scanf".这一节主要讲如何使用SAM4N的GPIO输入功能,实现按键的输入. 二.程序编写: ...
- Docker学习笔记-两种发布方式
第一种,自己手写dockerfile发布,上传至hubDocker 正常发布到文件夹中,发布文件上传至linux机器上.如 /www/app 将Dockerfile文件也复制到同目录 ./www/ap ...
- mybatis学习笔记(10)-一对一查询
mybatis学习笔记(10)-一对一查询 标签: mybatis mybatis学习笔记10-一对一查询 resultType实现 resultMap实现 resultType和resultMap实 ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- easyui datagride 两种查询方式
easyui datagride 两种查询方式function doReseach() { //$('#tt').datagrid('load', { // FixedCompany: $('.c_s ...
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...
- Hibernate的Api以及三种查询方式
Hibernate Api |-- Configuration 配置管理类对象 config.configure(); 加载主配置文件的方法(hibernate.cfg.xml) ...
- hibernate的三种查询方式
hibernate的三种查询方式 目录 hibernate的三种查询方式 1.HQL查询 1.1.SQL概述 1.2.实体查询 1.3.带where的查询 1.3.属性查询 1.4.实体的更新和删除 ...
随机推荐
- Connection节点配置错误解决方案
问题:配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件.分析器错误信息: 无法识别的配置节“connectionStrings”源错误:行 ...
- MongoDB小结14 - find【查询条件$lt $lte $gt $gte】
$lt $lte $gt $gte 以上四个分别表示为:< . <= . > . >= . 通常的做法是将他们组合起来,以便查找一个范围. 比如,查询年龄在18到25岁(含)的 ...
- Vue.js组件的通信之父组件向子父组件的通信
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于TensorFlow的图片识别服务
1.使用TensorFlow Retrain进行图片分类训练 https://www.tensorflow.org/versions/master/how_tos/image_retraining/i ...
- [VueJS + Typescript] Decouple Dependencies Using IoC Containers in Vue with TypeScript and InversifyJS
Using Object Oriented Programming, OOP, style allows us to apply Inversion of Control, IoC, and more ...
- Skype for Business七大新功能
Lync Server 2013的下一版本号.Skype for Business将于2015年4月正式公布,下面是七大新功能. "呼叫监听"(Call Monitor)--假设你 ...
- 安装eclipse中html/jsp/xml editor插件以及改动html页面的字体
近期在做android项目,用到了jquery mobile 框架以及phonegap,所以就会涉及一些html文件,可是html文件打开的方式是Text Editor ,而且打开之后一些html代码 ...
- MySQL Study之--MySQL压力測试工具mysqlslap
MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...
- linux 线程同步(二)
信号量 信号量是相互排斥锁的升级版把相互排斥锁中1变成了n.举个简单的样例:如果如今有10个人,有一部手机.这10个人都竞争来使用手机打电话这就是相互排斥锁.对于信号量,如今可能是有4部手机,这10个 ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...