在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条件函数。
一. SQL 条件分析
对于SQL每个人应该都很熟悉,这是基础的基础,如果没有使用过SQL的本文可以直接忽略了。先简单看看一个SQL语句,我们根据SQL语句的规则理解Where()方法
SELECT [ID],[UserName],[PassWord],[UserCode],[RealName],[Email],[Mobile],[Phone],[CreateTime],[CreateIp],[CreateUser],[LoginCount],[Picture],[UpdateTime],[IsDelete],[Status],[DepartNum],[ParentCode],[RoleNum],[Remark] FROM [JooShowGit].[dbo].[Admin] WHERE [UserCode]=@UserCode AND [IsDelete]=@IsDelete OR [Phone]=@Phone
SQL语句中后面起始条件关键字必定是WHERE,这个毋庸置疑。如果后面要跟其他的条件我们就可以使用AND 或者 OR 关键字将其连接起来。SQL条件语句基本可以归纳为如下
SELECT * FROM TABLE WHERE [表达式] (AND|OR) [表达式] ....
再看看一个稍微复杂点的SQL语句,代码如下
SELECT [ID],[UserName],[PassWord],[UserCode],[RealName],[Email],[Mobile],[Phone],[CreateTime],[CreateIp],[CreateUser],[LoginCount],[Picture],[UpdateTime],[IsDelete],[Status],[DepartNum],[ParentCode],[RoleNum],[Remark] FROM [JooShowGit].[dbo].[Admin] WHERE ([UserCode]=@UserCode1 OR [UserCode]=@UserCode2) AND [IsDelete]=@IsDelete
语句是什么意思,看官一看就能够明白,我们看重点部分 ,这个SQL语句使用了 () 运算符, 两个条件 () 和 [IsDelete]=@IsDelete 使用AND连接的,在()运算符中又是多个单个表达式的组合。
在看看单个表达式的效果
WHERE [UserCode]=@UserCode AND [IsDelete]=@IsDelete OR [Phone]=@Phone
表达式可以抽象理解为 字段 [运算符] 值 这种情况。在SQL中有很多运算符,这里我们看看详细:
+(加)、―(减)、(乘)、(除)、%(取余)>(大于)<(小于)、= (等于)、>=(大于等于)、<=(小于等于)、<> (不等于)、!=(不等于)、!>(不大于)!<( 不小于)
当然其他的运算符(AND OR 也称作运算符),我们先做一些简单的。
以上问题说的比较含糊,表述可能不清晰,但是大家应该都能够明白其大概意思,从以上的比较可以看出其实SQL是有一定规则的。
二. 框架中提供的条件方法
在做ORM映射的过程中,我们对条件操作的运算符也做了相应的映射,其映射为了一个枚举值
public enum ECondition { /// <summary> /// AND /// </summary> //And =1 , /// <summary> /// OR /// </summary> //Or =2 , /// <summary> /// LIKE /// </summary> Like = 3, /// <summary> /// IN /// </summary> In = 4, /// <summary> /// 大于 > /// </summary> Gth = 5, /// <summary> /// 小于 < /// </summary> Lth = 6, /// <summary> /// 等于 = /// </summary> Eth = 7, /// <summary> /// 大于等于 >= /// </summary> Geth = 8, /// <summary> /// 小于等于 <= /// </summary> Leth = 9, /// <summary> /// 不等于 != /// </summary> NotEth = 10, /// <summary> /// Is 关键字 /// </summary> Is = 11, /// <summary> /// Is Not 关键字 /// </summary> IsNot = 12, /// <summary> /// Between AND关键字 /// </summary> Between = 13, /// <summary> /// OR LIKE /// </summary> OrLike = 14, /// <summary> /// OR IN /// </summary> OrIn = 15, /// <summary> /// OR 字段> /// </summary> OrGth = 16, OrLth = 17, OrEth = 18, OrGeth = 19, OrLeth = 20, OrNotEth = 21, OrIs = 22, OrIsNot = 23, OrBetween = 24, /// <summary> /// += /// </summary> AddEth=25, /// <summary> /// -= /// </summary> SubtractEth=26, /// <summary> /// *= /// </summary> MultiplyEth=27, /// <summary> /// /= /// </summary> DivideEth=28, /// <summary> /// % /// </summary> Modulo=29, /// <summary> /// + /// </summary> Add=30, /// <summary> /// - /// </summary> Subtract = 31, /// <summary> /// * /// </summary> Multiply = 32, /// <summary> /// / /// </summary> Divide=33 }