Git.Framework 框架随手记--ORM查询数据集合 一
本文记录Git.Framework之ORM中最为浓墨重彩的一篇,查询集合。根据自己做的项目统计这个是使用频率最高的一个。
一. 查询集合方法简介
(1)List<T> GetList();
(2)List<T> GetList(bool isOpenTrans);
(3)List<T> GetList(T entity);
(4)List<V> GetList<V>(T entity) where V : class, new();
(5)List<T> GetList(T entity, bool isOpenTrans);
(6)List<V> GetList<V>(T entity, bool isOpenTrans) where V : class, new();
我们依旧提供了一些鸡肋方法,导致说话也无味,不想再说什么了。
List<T> GetList();
该方法返回对应的表中的所有数据行,包括每一个字段
List<T> GetList(T entity);
可以返回特定列以及添加筛选条件的集合数据
List<V> GetList<V>(T entity) where V : class, new();
将查询的数据结果集返回到特定的对象(可以是非映射的对象)中去,和前面的查询对象是一样的。
二. 查询结合使用案例
List<T> GetList(); 返回所有的数据行
List<AdminEntity> list = this.Admin.GetList();
这段代码返回Admin表中的所有数据行
List<T> GetList(T entity); 这个函数可以使用条件筛选返回特定字段行的数据集合
SysResourceEntity entity = new SysResourceEntity();
entity.IncludeAll();
entity.Where(a => a.IsDelete == (int)EIsDelete.NotDelete);
list = this.SysResource.GetList(entity);
上面返回未删除的资源数据集合,使用方式都在前面介绍过了,只是返回的数据类型不一样。
List<V> GetList<V>(T entity) where V : class, new();方法不再累述使用方式 三. 查询分页
List<V> GetList<V>(T entity, int pageSize, int pageIndex, out int rowCount) where V : class, new();
List<T> GetList(T entity, int pageSize, int pageIndex, out int rowCount);
List<V> GetList<V>(T entity, int pageSize, int pageIndex, out int rowCount, bool isOpenTrans) where V : class, new();
List<T> GetList(T entity, int pageSize, int pageIndex, out int rowCount, bool isOpenTrans);
在Git.Framework中提供了两组方法用于查询分页。方法中有三个主要参数:
T entity 查找的主表映射对象
int pageSize 查询每页的行数
int pageIndex 查询的页数, 页数起始值为1
out int rowCount 返回满足条件的数据总行数
public override List<InStorDetailEntity> GetDetailList(InStorDetailEntity entity, ref PageInfo pageInfo)
{
InStorDetailEntity detail = new InStorDetailEntity();
detail.Where(a => a.OrderNum == entity.OrderNum);
detail.IncludeAll();
detail.OrderBy(a => a.ID, EOrderBy.DESC);
int rowCount = ;
List<InStorDetailEntity> listResult = this.InStorDetail.GetList(detail, pageInfo.PageSize, pageInfo.PageIndex, out rowCount);
pageInfo.RowCount = rowCount;
return listResult;
}
上面是一个比较简单的查询分页,在上述代码中有一个参数 ref PageInfo pageInfo 这是一个分页对象
[Serializable]
public class PageInfo
{
public PageInfo(); public int PageCount { get; set; } //页数
public int PageIndex { get; set; }//当前页
public int PageSize { get; set; }//每页行数
public int RowCount { get; set; }//总行数
}
PageInfo是一个内置对象,我们不需要重新定义。但是查询分页的方法中有一个比较特殊的
detail.OrderBy(a => a.ID, EOrderBy.DESC);
上面是一个排序的代码,在使用分页的时候必须指定排序字段以及排序类型,下面看看排序的类型 自然不用说了
public enum EOrderBy
{
ASC = ,
DESC = ,
}
四. 查询前几行
在SQL中有一个TOP关键字 可以查询前几行记录,这个和分页有点类似。在Git.Framework 中也提供了方法Top() 用于查询前几行数据
List<T> Top(T entity, int pageSize);
List<V> Top<V>(T entity, int pageSize) where V : class, new();
List<V> Top<V>(T entity, int pageSize, bool isOpenTrans) where V : class, new();
List<T> Top(T entity, int pageSize, bool isOpenTrans);
List<V> Top<V>(T entity, int skipSize, int pageSize) where V : class, new();
List<T> Top(T entity, int skipSize, int pageSize);
List<T> Top(T entity, int skipSize, int pageSize, bool isOpenTrans);
List<V> Top<V>(T entity, int skipSize, int pageSize, bool isOpenTrans) where V : class, new();
T entity 查询的主表对象 ; int skipSize 跳过多少航 ; int pageSize查询行数
List<T> Top(T entity, int pageSize);
这个函数用于从第一行开始查询几行,如果pageSize大于数据行,则返回实际的数据行
InStorDetailEntity detail = new InStorDetailEntity();
detail.Where(a => a.OrderNum == entity.OrderNum);
detail.IncludeAll();
detail.OrderBy(a => a.ID, EOrderBy.DESC);
int rowCount = ;
List<InStorDetailEntity> list = this.InStorDetail.Top(detail,);
这个函数和分页函数一样,都必须指定排序字段以及排序类型
Git.Framework 框架随手记--ORM查询数据集合 一的更多相关文章
- Git.Framework 框架随手记--ORM查询数据集合 二
一. 分组查询 在SQL中使用Group By 来对数据分组,在实际中分组中一般与聚合函数一并使用.在Git.Framework中提供了相应的分组方法 DataTable Group(T entit ...
- Git.Framework 框架随手记--ORM查询返回实体对象
使用ORM有一个优势,可以通过某种机制将数据库中的数据转化为自己想要的对象形式数据.本章记录一下如何使用Git.Framework返回实体对象 一. Git.Framework 中提供的方法 在Git ...
- Git.Framework 框架随手记--ORM条件组合
在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...
- Git.Framework 框架随手记--ORM编辑删除
前面一篇文章<Git.Framework 框架随手记--ORM新增操作>主要讲解了如何使用Git.Framework往数据库中添加数据.其操作过程相对简单,本章主要记录如何编辑数据和修改数 ...
- Git.Framework 框架随手记--ORM项目工程
前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫 ...
- Git.Framework 框架随手记--ORM新增操作
本篇主要记录具体如何新增数据,废话不多说,开始进入正文. 一. 生成工程结构 上一篇已经说到了如何生成工程结构,这里在累述一次. 1. 新建项目总体结构 使用VS新建项目结构,分层结构可以随意.我们使 ...
- Git.Framework 框架随手记--存储过程简化
在很多的ORM中对存储过程操作都是一个棘手的地方,因为存储过程是一段预编译的代码,其中可以包含很多处理过程.在Git.Framework中也同样存在这样的问题,目前没有能力解决这个问题.但是对于存储过 ...
- Git.Framework 框架随手记--历史原因
Git.Framework 是近几年工作的一些工作经验总结,虽不能和某些知名的框架相提并论,但是还是比较实用的.此框架经过三年多的升级和维护,已经具有较强的实用性,在此记录该框架的使用操作方式,贡献给 ...
- Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...
随机推荐
- mysql数据库---同时插入两个表以上的数据
mysql数据库问题,如何同一个操作添加两个表(a表,b表),并把b表的id添加到a表字段中,b表id自动增长 在数据库中创建存储过程,比如存储过程的名字叫做 test在java中和正常使用sql的方 ...
- spring+mybatis多数据源切换
在实际的公司项目中,很可能会遇到一个问题就是,一个java项目,但是项目中涉及两个数据库,这两个数据库还在不同IP的机子上. 遇到这种情况的时候,我们有两个选择 1.不走spring的aop方式,直接 ...
- oracle缓存池使用解析
oracle有三种类型的缓存池,分别是default,keep和recycle.默认情况下只会使用default缓存池,另外两种需要额外配置. keep缓存池相当于是一直很热的default缓存池,缓 ...
- 8种Nosql数据库系统对比
导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...
- centos 配置本地 yum源
修改CentOS-Media.repo时 每行代码开始不要有空格 [c6-media] #库名称 name=CentOS-$releasever - Media #名称描述 baseurl=file: ...
- R语言绘图高质量输出
R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染.在ggplot2 ...
- [转] KVM Internals, code and more
KVM Kernel-based Virtual Machine Internals, code and more http://slides.com/braoru/kvm#/ What behind ...
- 自动化测试selenium+java 第一章
selenium元素的定位以及操作 1. 元素的定位 Selenium 自动化,我们需要做的最基本的事情就是在页面找到元素并通过脚本程 序去操作这个元素,实现模拟人工操作.我们有多种定位元素的方式可以 ...
- noip2008普及组3题题解-rLq
(第一次写题解,随意喷) (只是前一天的作业哈) (先凑个数) 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈 ...
- MIT jos 6.828 Fall 2014 训练记录(lab 3)
注:源代码参见我的github: https://github.com/YaoZengzeng/jos Part A : User Environments and Exception Handlin ...