一、开发环境

数据库: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学习笔记-几种查询方式的更多相关文章

  1. [SAM4N学习笔记]按键程序(查询方式)

    一.准备工作:      将上一节搭建的工程复制一份,命名为"5.key scanf".这一节主要讲如何使用SAM4N的GPIO输入功能,实现按键的输入. 二.程序编写:      ...

  2. Docker学习笔记-两种发布方式

    第一种,自己手写dockerfile发布,上传至hubDocker 正常发布到文件夹中,发布文件上传至linux机器上.如 /www/app 将Dockerfile文件也复制到同目录 ./www/ap ...

  3. mybatis学习笔记(10)-一对一查询

    mybatis学习笔记(10)-一对一查询 标签: mybatis mybatis学习笔记10-一对一查询 resultType实现 resultMap实现 resultType和resultMap实 ...

  4. MyBatis:学习笔记(3)——关联查询

    MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...

  5. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

  6. easyui datagride 两种查询方式

    easyui datagride 两种查询方式function doReseach() { //$('#tt').datagrid('load', { // FixedCompany: $('.c_s ...

  7. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

  8. Hibernate的Api以及三种查询方式

    Hibernate  Api |-- Configuration       配置管理类对象 config.configure();    加载主配置文件的方法(hibernate.cfg.xml) ...

  9. hibernate的三种查询方式

    hibernate的三种查询方式 目录 hibernate的三种查询方式 1.HQL查询 1.1.SQL概述 1.2.实体查询 1.3.带where的查询 1.3.属性查询 1.4.实体的更新和删除 ...

随机推荐

  1. codevs——1080 线段树练习

    1080 线段树练习  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 一行N个方格,开始每个格子里都有 ...

  2. codevs——1742 爬楼梯

    1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的 ...

  3. Linux系统备份还原工具2(TAR/压缩工具)

    相比DD备份还原工具,TAR压缩还原工具更加小巧和灵活,但是不能备份MBR.当然可以通过重新安装GRUB来解决MBR的这一问题.同时,TAR的做法也是官方推荐的. 注意:一个硬盘启动时最新经过MBR( ...

  4. Linux学习系列之LNMP

    LNMP介绍 LNMP是什么 LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际流行的Web架构; 这四种软件组合,可以成为一个免费.高效.扩展性强的Web架构; LNMP原理图 ...

  5. centos7容量扩充

    新买的2T 绿盘到货了~~好开心的说~但毕竟是第一次安装,事先还是在网上搜索了很多资料才敢动手,下面就开始啦~ 环境:Centos7.dell服务器.2T容量绿盘 1.硬盘连接好之后,开机先使用fdi ...

  6. ios打包静态库

    1. 什么是库? 所谓库就是程序代码的集合,是共享程序代码的一种方式. 2. 库的分类 根据程序代码的开源情况,库可以分为两类 开源库源代码是公开的,你可以看到具体实现.比如GitHub上比较出名的第 ...

  7. ZOJ 3609 Modular Inverse(扩展欧几里德)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4712 The modular modular multiplicat ...

  8. NinePatchChunk.java分析

    最近在Swing中使用.9图片,用到了NinePatchChunk.java文件,但是发现有时会出现无法完美展示的情况,决定修复一下这个问题,顺便研究一些.9的绘制过程 通过分析发现draw函数先是计 ...

  9. OTN / SONET / SDH

    ①OTN(光传送网,OpticalTransportNetwork),是以波分复用技术为基础.在光层组织网络的传送网,是下一代的骨干传送网; ②SONET (Synchronous Optical N ...

  10. ANT-普通替换和正则替换

    ant提供了两个指令用于编译时修改文件,好处就不说了 ,就说说如何使用吧. replaceregexp 和 replace的区别就和java中String replace和replaceAll一样 , ...