一、开发环境

数据库: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. cogs——8. 备用交换机

    8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直 ...

  2. Java高并发实战,锁的优化

    锁优化 这里的锁优化主要是指 JVM 对 synchronized 的优化. 自旋锁 互斥同步进入阻塞状态的开销都很大,应该尽量避免.在许多应用中,共享数据的锁定状态只会持续很短的一段时间.自旋锁的思 ...

  3. 解决confluence的乱码问题

    使用confluence时发现一些含有中文的页面中,中文都变成了问号. 继续搜索解决方案,发现时数据库中数据的格式不对, 在mysql中输入以下命令:   mysql> show variabl ...

  4. TCP_NODELAY和TCP_CORK nagle算法和cork算法

    TCP_NODELAY 默认情况下,发送数据採用Nagle 算法.这样尽管提高了网络吞吐量,可是实时性却减少了,在一些交互性非常强的应用程序来说是不同意的.使用TCP_NODELAY选项能够禁止Nag ...

  5. webpack—入门

    点击进入webpack官网.,开始教程时,建议先学习ES6语法,也请先观看本篇Windows符号介绍文章,当所有webpack内容学习完后,会有一个专门的介绍 webpack四个核心概念(从官网入门— ...

  6. Oracle index unusable和invisible的差别

    摘录自11g的官方文档:      UNUSABLE Specify UNUSABLE to mark the index or index partition(s) or index subpart ...

  7. 【剑指Offer学习】【面试题31:连续子数组的最大和】

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求全部子数组的和的最大值.要求时间复杂度为O(n). 样例说明: 比如输入的数组为{1, -2, 3, 10, ...

  8. u

    Atrrible /s/d –s –h  u盘修复

  9. HDU 4920(杭电多校训练#5 1010 题) Matrix multiplication(不知道该挂个什么帽子。。。)

    题目地址:pid=4920">HDU 4920 对这个题简直无语到极点. . .竟然O(n^3)的复杂度能过....方法有三.. 1:进行输入优化和输出优化. . (前提是你的输入优化 ...

  10. 01排序的Java实现

    比赛描写叙述: 的个数同样时再按ASCII码值排序. 输入: 个字符. 输出: 串的顺序.使得串按基本描写叙述的方式排序. 例子输入: 例子输出: 被AC的代码例如以下: import java.ut ...