前言

  FreeSql中查询的支持非常丰富,包括链式语法,多表查询,表达式函数;写法多种多样,可以使用简单的条件查询、sql查询、联表、子表等方式用于查询数据,
查询的格式也有很丰富,包括单条记录,列表、扩展分页、Dto映射,不可谓不强大。
 
 

简单查询

  使用Where方法传入条件,生成sql的条件查询
_freeSql.Select<Student>()
.Where(x => x.Id > 10)
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version] FROM[Student] a WHERE(a.[Id] > 10)
 
 

查询指定字段

  需要返回的字段写在执行sql获取结果的方法中,最终返回一个匿名类
_freeSql.Select<Student>()
.Where(x => x.Id > 10)
.ToList(x => new { x.Id, x.Name });
//SELECT a.[Id], a.[Name] FROM[Student] a WHERE(a.[Id] > 10)
 
 

条件查询

List<long> rows = new List<long> { 1, 2, 3 };
_freeSql.Select<Student>()
.Where(x => rows.Contains(x.Id))
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version] FROM[Student] a WHERE(((a.[Id]) in (1, 2, 3)))
 

分页查询

  分页查询使用Page(1,20)直接指定PageIndex和PageSize即可,总数通过Count()获取,分页API中还有Skip,Take,Offset,Limit用于分页
_freeSql.Select<Student>()
.Page(2, 5)
.Count(out var total)
.OrderBy(x => x.Id)
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version]
//FROM[Student] a
//ORDER BY a.[Id]
//OFFSET 5 ROW
//FETCH NEXT 5 ROW ONLY
//total=15
 

分块查询ToChunk

  分块查询对大批量的数据很友好,可减少内存开销,每次只查指定条数,这就意味着会查询多次数据库,每次查询完把数据集插入列表
var studentList =new List<Student>();
_freeSql.Select<Student>().OrderBy(a => a.Id).ToChunk(5, done => {
studentList.AddRange(done.Object);
Console.WriteLine(JsonConvert.SerializeObject(done));
});
 
  上面一共15条记录,按照每次查询5条,一共查了三次,这里是三次的结果

 

Dto映射查询

  先创建一个StudentDto,设置了一个Student类中没有的RegistTime字段
查看代码
public class StudentDto
{
public int Id { get; set; } public string Name { get; set; } public DateTime RegistTime { get;set; }
}

//未纠正映射
_freeSql.Select<Student>()
.Where(x => x.Id == 10)
.First<StudentDto>();
//{"Id":10,"Name":"小明8","RegistTime":"0001-01-01T00:00:00"}
  Dto与查询类型之间如果字段名不同,只能是默认值
//纠正映射
_freeSql.Select<Student>()
.Where(x => x.Id == 10)
.First(x=> new StudentDto { RegistTime=x.AddTime});
//{"Id":10,"Name":"小明8","RegistTime":"2022-05-19T11:16:44.447"}

  使用纠正映射,将Student.AddTime映射到StudentDto.RegistTime上面,就能处理这种情况
  
 
 
 
 
 

FreeSql学习笔记——3.查询的更多相关文章

  1. mybatis学习笔记(14)-查询缓存之中的一个级缓存

    mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...

  2. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  3. MongoDB学习笔记六—查询下

    查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...

  4. MongoDB学习笔记五—查询上

    数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...

  5. hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)

    一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...

  6. Oracle 学习笔记 常用查询命令篇

    1.查询某个用户下有多少张表 有时候很有用  select count(*) from dba_tables t where t.owner='SCOTT';

  7. Hibernate学习笔记--------4.查询

    一.Get/Load Get方法是立即检索,而load是延迟检索,他们都是根据主键进行查询.在<class>标签中,若把lazy属性改为false,load方法就会立即检索,class中的 ...

  8. 【SQL】MySQL学习笔记1-----子查询

    1.什么叫子查询? 通俗的讲就是查询中有查询,SQL语句中有多个select语句. 2.什么地方可以嵌入子查询? SELECT 列 (不在标准之内) FROM 表 (可以嵌入,作为表存在) WHERE ...

  9. Entity Framework with MySQL 学习笔记一(查询)

    参考 : http://msdn.microsoft.com/en-us/data/jj574232.aspx EF 查询基本上有3中 默认是 Lazy Loading 特色是只有在需要数据的时候EF ...

  10. MySQL学习笔记(二)—查询

    一.多表连接查询 新建两张表t_user.t_order.              1.内连接      返回满足条件的所有记录. (1)显式内连接      使用inner join关键字,在on ...

随机推荐

  1. 使用redis 的订阅服务

    1.业务使用场景 我们在使用表单动态添加字段,如果新增字段,再保存数据,这个时候就会出错,出错的原因是seata 再本地缓存元数据,修改物理表的时候,这个元数据并没有发生变化,因此需要刷新元数据,因为 ...

  2. JavaScript 页面缓存

    1.前言 由来:默认环境中,当浏览器重复访问一个资源时,为节省资源与性能,浏览器将其缓存,后续的请求不再从服务器下载该资源,而是直接从本地缓存中读取,默认时没有强制缓存的 副作用:当服务器资源更新时, ...

  3. 《前端运维》五、k8s--4机密信息存储与统一管理服务环境变量

    一.储存机密信息 Secret 是 Kubernetes 内的一种资源类型,可以用它来存放一些机密信息(密码,token,密钥等).信息被存入后,我们可以使用挂载卷的方式挂载进我们的 Pod 内.当然 ...

  4. 鸿蒙NEXT开发案例:保质期计算

    [引言] 保质期计算应用是一个基于鸿蒙NEXT框架开发的数字和文本统计组件.用户可以输入商品的生产日期和保质期天数,应用会自动计算并展示相关信息,包括保质状态.剩余天数.生产日期和到期日期. [环境准 ...

  5. 鸿蒙UI开发快速入门 —— part03: 组件的生命周期

    1. 什么是组件的生命周期 组件的生命周期是我们开发一个组件必须要关注的内容,组件的生命周期,指的是组件的创建.渲染.销毁等过程.因为这个过程就类似于人从出生到离世的过程,从而称为:组件的生命周期. ...

  6. SQL Server创建用户一直提示用户已存在的解决办法

    背景:复制的老数据库,创建账号onlyread时,一直提示数据库里有这个用户名.报错如下:"用户.组或角色'onlyread'在当前数据库中已存在." 解决方法: 1. 查询数据库 ...

  7. sqlserver查询某数据库下表的占用空间

    要查看 SQL Server 中哪个表占用的空间最多,您可以使用以下查询来列出所有表及其占用的空间大小,并按照占用空间从大到小进行排序: SELECT t.NAME AS TableName, p.r ...

  8. HLS视频加密,让您的视频内容更安全!

    ** 背景介绍** HLS视频加密是一种基于HTTP Live Streaming(HLS)协议的加密技术.它的核心思想是将视频切片进行加密处理,在客户端播放时需要先获取解密密钥才能正常偶发.通过这种 ...

  9. COS 音视频实践|给你的视频加把锁

    导语 为了保障视频内容安全,防止视频被非法下载和传播,对象存储(Cloud Object Storage,COS)数据处理基于数据万象 CI 提供了 HLS 视频加密的功能,拥有相比于私有读文件更高的 ...

  10. 2023 IDC中国数字金融论坛丨中电金信向行业分享“源启+应用重构”新范式

    9月8日,IDC主办的"2023 IDC中国数字金融论坛"在北京召开.中电金信受邀参会,并带来了深度数字化转型趋势之下关于应用重构的分享与洞见. 论坛重点关注金融科技创新发展趋势与 ...