一、开发环境

数据库: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. HDU——1498 50 years, 50 colors

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. Servlet基础教程:tutorialspoint-servlet

    来自turorialspoint的Servlet基础教程(英文),官网:https://www.tutorialspoint.com/servlets/index.htm 这个教程在国内已经被翻译成中 ...

  3. dtrace.org

    http://dtrace.org/blogs/rm/2016/09/15/turtles-on-the-wire-understanding-how-the-os-uses-the-modern-n ...

  4. Java使用Memcached和Redis简单示例

    package xmq.study.memcached; import java.io.IOException; import java.net.InetSocketAddress; import n ...

  5. UML图与机房收费系统实例

    前言 通过看视频,对于UML也有了一些初步的了解.前面也介绍了UML的三个基本块.规则和机制,只是这些东西就像是一个个机器的零部件.要组合起来才干发挥作用. 所以,实例才是验证自己学习好坏标准,以下我 ...

  6. android的ListView点击item使item展开的做法

    直接上代码把.主要是又一次给item measure高度,直接上代码把 import java.util.ArrayList; import android.app.Activity; import ...

  7. osg提前定义几何体设置颜色

    注意尽管osg::shape不能够设置颜色,可是osg::shapedrawable能够.

  8. hdu 1565 方格取数(1)(状态压缩dp)

    方格取数(1)                                                                 Time Limit: 10000/5000 MS (J ...

  9. Datagridview CurrentRow.Index

    int index = dataGridView1.CurrentRow.Index;  //获取当前选择行引导 string str = dataGridView1.Rows[index].Cell ...

  10. flask的nocache防止js不刷新

    原文:http://librelist.com/browser/flask/2011/8/8/add-no-cache-to-response/#952cc027cf22800312168250e59 ...