Bitter.Core系列五:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例 分页聚联查询
Bitter.Core 在聚联/分页聚联查询的时候,采用原生的MSSQL, MYSQL 语句查询,做过复杂高级项目的人知道,原生的聚合查询代码执行效率更高,更快,更容易书写,开发量最少。
借助原生的MSSQL,MYSQL 客户端工具,将聚合查询的SELECT 语句写好,直接扔进Bitter ORM 框架就行了。
业务层只关心写好相对应的 SELECT SQL 语句. 如下代码示例:
#region //聚联条件分页查询 var type = 1; //非关键代码,用于下面演示代码用
var Score=100;
var studentname = "H"; //非关键代码,用于下面演示代码用 var sql = @"SELECT score.FScore,student.FName as studentName,class.FName as className,grade.FName as gradeName FROM dbo.t_StudentScore score
LEFT JOIN dbo.t_student student ON score.FStudentId = student.FID
LEFT JOIN dbo.t_class class ON student.FClassId=class.FID
LEFT JOIN dbo.t_Grade grade ON grade.FID=class.FGradeId
";
PageQuery pq = new PageQuery(sql, null); pq.Where("1=1"); if (type == 1)
{
pq.Where("score.FScore>60 ");
}
if (type == 2)
{
pq.Where("score.FScore>60 and score.FScore<80 ");
}
if (type == 3)
{
pq.Where("score.FScore==@ParmeScore",new {ParmeScore=Score}});
}
if (!string.IsNullOrEmpty(studentname))
{
pq.Where(" student.FName like '%' + @FScoreName + '%'",new {FScoreName=studentname});
} //通过ThenAsc 方法指定字段排序
pq.ThenASC("score.FScore "); //通过ThenDESC 方法指定字段排序
pq.ThenDESC("student.FName"); //自己直接指定排序字段和排序关键词
pq.OrderBy("student.FAddTime desc"); //分页指定 Skip: 当前页,Take :每页数量
pq.Skip(1).Take(10); var dt = pq.ToDataTable(); //获取数据 var studentscount = pq.Count(); //获取当前条件下的数量 #endregion
非常关键:
/**
* 非常关键(Notic): PageQuery pq = new PageQuery(sql,null) 中的 sql 变量 不能包含 WHERE 条件,但是 LEFT JOIN\INNER JOIN\UNION JOIN\OUTER JOIN 的子语句的 WHERE 条件是可以出现的,需要 WHERE ,统一通过 pq.Where() 进行条件加载,
* 如果有疑问,可以 github 上留言,或者直接留言,Tks. 例如(正确):sql=@" SELECT score.FScore,student.FName,class.FName,grade.FName FROM dbo.t_StudentScore score
LEFT JOIN dbo.t_student student ON score.FStudentId = student.FID
LEFT JOIN dbo.t_class class ON student.FClassId=class.FID
LEFT JOIN dbo.t_Grade grade ON grade.FID=class.FGradeId"; 例如(正确):sql=@"
SELECT score.FScore,student.FName,class.FName,grade.FName FROM dbo.t_StudentScore score
LEFT JOIN dbo.t_student student ON score.FStudentId = student.FID
LEFT JOIN dbo.t_class class ON student.FClassId=class.FID
LEFT JOIN (SELECT * FROM t_Grade WHERE FScore>15) grade ON grade.FID=class.FGradeId
";
例如(错误):sql=@" SELECT score.FScore,student.FName,class.FName,grade.FName FROM dbo.t_StudentScore score
LEFT JOIN dbo.t_student student ON score.FStudentId = student.FID
LEFT JOIN dbo.t_class class ON student.FClassId=class.FID
LEFT JOIN dbo.t_Grade grade ON grade.FID=class.FGradeId
WHERE score.FScore>10 AND score.FScore<60";
*
* */
Bitter.Core系列五:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例 分页聚联查询的更多相关文章
- Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 开源了
开源的来了,懒人程序员的福音,.NET 生态闭环太缺开源精神了, 拥抱开源! 前言: 本人不是不喜欢现有ORM的轮子,而是发现现有的ORM 的都不太符合开发人员的一些习惯.现有的ORM 要么功能太冗余 ...
- Bitter.Core系列九:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 WITH 子句支持
有时我们在聚合查询中,经常会有复杂的聚联查询.有时表的聚联查询SQL 子句比较复杂,DBA 会经常告诉们,能否通过WITH 子句优化.WITH 子句,是对SQL 聚联查询的优化.Bitter.Core ...
- Bitter.Core系列二:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之数据库连接
Bitter.Core NETCore 相当的简单易用,下面附上使用示例: 数据中连接:请在你的NETCORE 项目中 创建:Bitter.json 配置文件,然后追加如下配置内容: MSSQL 连接 ...
- Bitter.Core系列 十二 :Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 支持的 where 条件表达式
Bitter.Core 内置了支持大部分的 linq 的条件表达式.基本上符合我们 where 条件所需.Bitter.Core 的支持 表达式内置 扩展 有: EndsWith 在Sql 解 ...
- Bitter.Core系列十一:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 字段变更收集器
有时候我们业务层需要记录 数据库表更改之前的值和更改之后的值的记录集合--此过程在 Bitter.Core 中有强有力的支持.Bitter.Core 字段收集器提供了方便简单易用的 收集对象在修改之前 ...
- Bitter.Core系列十:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 Log 日志
Bitter 框架的 Log 全部采用 NLog 日志组件.Bitter.Core 的 执行语句的日志记录 Nlog 日志级别为:info. 如果想要查看Bitter.Core 的执行SQL,先要去 ...
- Bitter.Core系列八:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 事务
Bitter.Core 编写事务相当简单,Bitter.Core 尽可能的将代码编写量降为最低,例外一方方面保证客户主观能控制代码.Bitter.Core 事务提交,支持Builkcopy事务,原生事 ...
- Bitter.Core系列三:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例模型创建
在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表.示例数据库表,如下代码(MSSQL 为例) --学生表 CREATE TABLE t_student ...
- Bitter.Core系列七:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 示例 更新删除插入
Bitter Orm 在操作数据库增删改的时候,支持模型驱动和直接执行裸SQL 操作,示例代码如下: 一:模型驱动(增删改) /// <summary> /// 插入,删除,更新示例(模型 ...
随机推荐
- Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案
内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...
- python字符串、列表通过值找索引/键
python透过"值"找字符串和列表中的索引和键. 1 #!usr/bin/env python3 2 #-*- coding=utf-8 -*- 3 4 ''' 5 python ...
- easyui中在formatter: function (value, row,index) {中添加删除方法
{ field : 'abj', title : '操作', align : 'center', resizable:false, width:'10%', formatter: function ( ...
- 后端Long类型传到前端精度丢失的正确解决方式
原因:前端js对Long类型支持的精度不够,导致后端使用的Long传到前端丢失精度,比如现在分布式id生成算法"雪花算法"在使用中就会出现问题. 解决方式: 1.后端的Long类型 ...
- 使用node+puppeteer+express搭建截图服务
使用node+puppeteer+express搭建截图服务 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14222807.html 写在之前 一开始我们的需求 ...
- 9条消除if...else的锦囊妙计,助你写出更优雅的代码
前言 最近在做代码重构,发现了很多代码的烂味道.其他的不多说,今天主要说说那些又臭又长的if...else要如何重构. 在介绍更更优雅的编程之前,让我们一起回顾一下,不好的if...else代码 一. ...
- sql文件转换为excel文件
最近经常需要把sql整理成excel,本人比较懒,所以写一个小工具,用到了jxl包.以前没有接触过,正好了解一下. 一.基础知识 jxl操作excel包括对象 Workbook,Sheet ...
- 三、hadoop、yarn安装配置
本文hadoop的安装版本为hadoop-2.6.5 关闭防火墙 systemctl stop firewalld 一.安装JDK 1.下载java jdk1.8版本,放在/mnt/sata1目录下, ...
- 《深入理解Java虚拟机》 Java对象的生命周期
Java虚拟机运行时数据区 方法区:存储 类信息.常量.静态变量.即使编译器编译后的代码等数据,也有别名叫做非堆. 方法区其中有包含有 运行时常量池,用于存放编译期生成的各种字面量和符号引用.其中, ...
- 【.NET与树莓派】上手前的一些准备工作
.NET Iot 不是什么新鲜事物,百科很强大,故老周在此也不必多介绍.现在的时代和老周当年学 QBasic 的时代不同,那时候拉根电话线上网,下载速度只有可怜的 3.5 kb/s.而且还要去店里买上 ...