zoukankan      html  css  js  c++  java
  • 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 = 0;
         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 = 0,
            DESC = 1,
    }

        

      四. 查询前几行

        在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 = 0;
    List<InStorDetailEntity> list = this.InStorDetail.Top(detail,12);

         这个函数和分页函数一样,都必须指定排序字段以及排序类型

  • 相关阅读:
    可重入的自旋锁
    自旋锁浅析
    hibernate规避SQL注入实例
    关于2B的转义问题
    java指定文件编码格式
    win10下启动zkui
    【转】角落的开发工具集之Vs(Visual Studio)2017插件推荐
    《LINQ技术详解C#》-4.延迟操作符(第2部分 LINQ到对象)
    《LINQ技术详解C#》-2.查询表达式翻译为标准查询操作符
    Code alignment 代码对齐改进(VS2017)
  • 原文地址:https://www.cnblogs.com/qingyuan/p/3726286.html
Copyright © 2011-2022 走看看