SqlSugar基础查询
查所有
List<Student> list=db.Queryable<Student>().ToList()//select * from Student |
查询总数
int count=db.Queryable<Student>().Count()//select count(1) from Student |
按条件查询
db.Queryable<Student>().Where(it=>it.Id==1).ToList()//select * from Student where id=1db.Queryable<Student>().Where(it=>it.name !=null).ToList()//不是null//select * from Student where name is not nulldb.Queryable<Student>().Where(it=>it.name ==null).ToList()//是null//select * from Student where name is nulldb.Queryable<Student>().Where(it=>it.name !="").ToList()//不是空 ,不为空//select * from Student where name <> '' |
多条件查询
db.Queryable<Student>().Where(it=>it.Id>10&&it.Name=="a").ToList()//select * from Student where id>10 and name='a'db.Queryable<Student>().Where(it=>it.Id>10).Where(it=>it.Name=="a").ToList()//select * from Student where id>10 and name='a'//如果是或者关系可以用 || |
动态OR查询
var exp= Expressionable.Create<Student>();exp.OrIF(条件,it=>it.Id==1);//.OrIf 是条件成立才会拼接ORexp.Or(it =>it.Name.Contains("jack"));//拼接ORvar list=db.Queryable<Student>().Where(exp.ToExpression()).ToList(); |
模糊查询
db.Queryable<Student>().Where(it =>it.Name.Contains("jack")).ToList();//select * from Student where name like %jack% |
根据主键查询
susgar中的single等同于EF中的SingleOrDefault
/*单主键查询*/db.Queryable<Student>().InSingle(2) //通过主键查询 SingleByIddb.Queryable<Student>().Single(it=>it.Id==2) //根据ID查询//select * from Student where id=2/*多主键查询*/var getAll=db.Queryable<Order>().WhereClassByPrimaryKey(new Order(){Pk1=1,Pk2=xx}).ToList(); //单个实体 vargetAll=db.Queryable<Order>().WhereClassByPrimaryKey(List<Order>).ToList(); //支持集合 |
查询第一条 ,第一行
.First() 等同于C#中的 FirstOrDefault , 没有值返回 null
db.Queryable<Student>().First(it=>it.Id==1) //没有返回Null//select top 1 * from Student where id=1 |
查询最后一条
First() 等同于C#中的 FirstOrDefault , 没有值返回 null
db.Queryable<Student>().OrderBy(it=>it.Id,OrderByType.Desc )// 倒序.First(it=>it.Id>10) //没有返回Null//select top 1 * from Student order by id desc where id>10 |
查前几条
db.Queryable<Student>().Take(10).ToList()//select top 10 * from Student |
数据行数
db.Queryable<Student>().Where(it=>it.Id>11).Count()//同步db.Queryable<Student>().Where(it=>it.Id>11).CountAsync()//异步//select count(*) from Student where id>11//你也可以用函数SqlFunc.AggregateCount |
设置新表名
//例1:更新表名db.Queryable<School>().AS("Student").ToList();//生成的SQL SELECT [ID],[NAME] FROM Student//动态表名 表别名 指定表明//例2:给表名添加前缀db.Queryable<School>().AS("dbo.School").ToList();//生成的SQL SELECT [ID],[NAME] FROM dbo.School//如果不用AS也可以在特性中设置别名,看文档:实体本置 |
是否存在记录
is exists
db.Queryable<Student>().Where(it=>it.Id>11).Any()db.Queryable<Student>().Any(it=>it.Id>11) //上面语法的简化//异步就是 AnyAsync() |
In查询(单个字段)
单个字段
int [] allIds =new int[]{2,3,31};db.Queryable<OrderItem>().Where(it => allIds.Contains(it.OrderId)).ToList()//orderid in (2,3,31)//字符串类型 varchar和nvarchar (默认varchar来保证性能) NameList.Contains(it.Name,true) //true和false来控制是varchar还是nvarchar |
In查询(多个字段)
多个字段 (升级:5.1.4.67-preview04)
List<OrderItem> list=xxx; db.Queryable<OrderItem>().Where(it => list.Any(s => s.Id == it.Id && s.Name == it.Name)) //也可以用动态表达式拼OR实现 |
In模糊查询
对象集合In like 升级:5.1.4.67
List<OrderItem> list=xxx; db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s.Name))) //也可以用动态表达式拼OR实现 |
数组集全 in like :5.1.4.85
List<string> list=xxx; db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s))) //也可以用动态表达式拼OR实现 |
Not In
int [] allIds =new int[]{2,3,31};db.Queryable<OrderItem>().Where(it => !allIds.Contains(it.OrderId)).ToList()//orderid NOT in (2,3,31) |
简单排序
db.Queryable<Student>().OrderBy((st,sc)=>sc.Id,OrderByType.Desc).ToList()//排序 可以多个//更多用法https://www.donet5.com/Home/Doc?typeId=2312 |
查询一列
db.Queryable<Student>().Select(it=>it.Name).ToList() //单值 查询列 查询单独列 |
查询单条
查询一条
db.Queryable<Student>().Single(it=>it.Id==1) //没有返回Null,如果结果大于1条会抛出错误//select * from Student where id=1 // 查询id等于1的单条记录 |
获取最大值
db.Queryable<Order>().Max(it=>it.Id);//同步 db.Queryable<Order>().MaxAsync(it=>it.Id);//异步//也可以用函数 SqlFunc.AggregateMax |
获取最小值
db.Queryable<Order>().Min(it=>it.Id);//同步db.Queryable<Order>().MinAsync(it=>it.Id);//异步//也可以用函数 SqlFunc.AggregateMin |
求和
db.Queryable<Order>().Sum(it=>it.Id);//同步db.Queryable<Order>().SumAsync(it=>it.Id);//异步//也可以用函数 SqlFunc.AggregateSum |
查询过滤排除某一个字段
生成的sql Select 不会有Files
/***单表***/db.Queryable<Order>().IgnoreColumns(it=>it.Files).ToList();//只支持单表查询 /***联查***///是主表var leftQuery=db.Queryable<Order>().IgnoreColumns(it=>it.Files);var list=db.Queryable(leftQuery).LeftJoin<OrderDetails>((o,d)=>o.id==d.orderid).Select(o=>o).ToList(); //是Join的表var rightQuery= db.Queryable<OrderItem>().IgnoreColumns(it=>it.Files);var list=db.Queryable<Order>().LeftJoin(rightQuery,(o,d)=>o.Id == d.OrderId).Select(o=>o).ToList(); |
SqlSugar基础查询的更多相关文章
- HQL基础查询语句
HQL基础查询语句 1.使用hql语句检索出Student表中的所有列 //核心代码 @Test public void oneTest() { Query query=session.createQ ...
- Mego开发文档 - 基础查询
基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...
- T-SQL基础查询——单表查询
1,查询的顺序 SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders FROM Sales.Orders GROUP BY ...
- Mongodb 基础 查询表达式
数据库操作 查看:show dbs; 创建:use dbname; // db.createCollection('collection_name'); 隐式创建,需要创建的数据库中有表才表示创 ...
- mysql基础查询语法
一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...
- SQL基础--查询之三--嵌套查询
SQL基础--查询之三--嵌套查询
- SQL基础--查询之五--查询语句一般格式
SQL基础--查询之五--查询语句一般格式
- SQL基础--查询之四--集合查询
SQL基础--查询之四--集合查询
- SQL基础--查询之一--单表查询
SQL基础--查询之一--单表查询
- SQL基础--查询之二--连接查询
SQL基础--查询之二--连接查询
随机推荐
- Kubernetes(K8S) Pod 介绍
Pod 是 k8s 系统中可以创建和管理的最小单元, 是资源对象模型中由用户创建或部署的最小资源对象模型, 也是在 k8s 上运行容器化应用的资源对象, 其他的资源对象都是用来支撑或者扩展 Pod 对 ...
- 不懂前端,我依然开发了一个机器学习APP
人人都知道学习很重要,学习究竟是为了什么呢?根本目的只有一个,学以致用! 机器学习,大家都学了很多算法,搞了很多模型,但是极少拿来解决实际问题. 毕竟开发一个机器学习应用需要的技术栈不是每个人都能掌握 ...
- VA41 销售合同创建BAPI
一.事务代码VA41 合同创建的过程和销售订单几乎一致 二.调用BAPI 调用BAPI为BAPI_CONTRACT_CREATEFROMDATA 传参和销售订单BAPI:BAPI_SALESORDER ...
- 为什么加了@Transactional注解,事务没有回滚?
在昨天的<事务管理入门>一文发布之后,有读者联系说根据文章尝试,加了@Transactional注解之后,事务并没有回滚.经过一顿沟通排查之后,找到了原因,在此记录一下,给后面如果碰到类似 ...
- Spring Cloud Alibaba 2.2.6发布:新增Nacos注册快速失败的配置
7月12日消息,Spring Cloud Alibaba新版本2.2.6发布,该版本适配Spring Cloud Hoxton.SR9. 下面一起来看看该版本内容: 特性增强 Nacos 支持服务注册 ...
- 解决Github中使用Octotree时,出现 Error: API limit exceeded 报错 或者 Error: Connection error报错的问题(详细操作)
对于科研工作者来说,Github 是不可多得的利器,那么Octotree 插件的使用将会让用户在使用 Github 时拥有更好的体验,提高学习工作的效率.但是笔者在使用的过程中遇到以下这样的问题,下面 ...
- Seata 分布式事务解决方案及特点
本文为博主原创,未经允许不得转载: 目录: 1. Seata官方链接 2. Seata的三大角色 3.Seata 常见分布式事务解决方案 4. 2PC两阶段提交协议 5. 2PC 的问题 6. AT模 ...
- Java之利用openCsv将csv文件导入mysql数据库
前两天干活儿的时候有个需求,前台导入csv文件,后台要做接收处理,mysql数据库中,项目用的springboot+Vue+mybatisPlus实现,下面详细记录一下实现流程. 1.Controll ...
- Linux性能分析——TOP命令详解
Linux性能分析--TOP命令详解 1.Top命令介绍 Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况. 这个命令对所有正在运行的进程和系 ...
- 【TouchGFX】MIXINS - ClickListener
ClickListener Click Listener混合器使它可以应用到其小部件,并能够通过使用回调扩展小部件来响应触摸输入. 在TouchGFX Designer中,可以通过在" Mi ...