1:最簡單的查詢單條記錄
AJ.Model.User ou = IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa"));
同寫sql的方式
AJ.Model.User ou = IDB.Simple<AJ.Model.User>("select * from User where USER_TYPE = @ut and PASSWORD = @pa", new { ut = 1, pa = "aaa" });
2:查詢多條記錄
List<AJ.Model.User> olist = IDB.List<AJ.Model.User>(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
同寫sql的方式
List<AJ.Model.User> olist = IDB.List<AJ.Model.User>("select * from User where uuid > @uid", new { uid = 2 });
查詢1000條30毫秒左右
3:使用直接中間語言Emit查詢方式
只用使用中間語言可以提高不少效率,可以減少解析的時(shí)間,但經(jīng)過
測試效率提高不是非常明顯,現(xiàn)在.net的效率還是優(yōu)化得非常不錯(cuò)了,為了維護(hù)方便
主要還是使用寫代碼的方式
List<AJ.Model.User> olist = IDB.ListEmit<AJ.Model.User>(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
4:條件的使用
條件可以在Where后邊任意組合
使用 and (where a.USER_TYPE = @a3qf6eqse and a.PASSWORD = @dve2tge)
AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa")
使用 or (where a.USER_TYPE = @a3qf6eqse or a.PASSWORD = @dve2tge)
AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 | a.PASSWORD == "aaa")
使用 Between and
AJ.CModel.User.Select.Where(a => a.ID.Between(1,20))
使用like
AJ.CModel.User.Select.Where(a => a.ID.Like("%"+2)))
使用 > ,>=,< <=.......
AJ.CModel.oll_user.Select.Where(a => a.UUID>10 & a.UUID <= 20 | a.UUID >=20)
5:選擇你需要查詢的字段
使用Column函數(shù)進(jìn)行字段選擇 as函數(shù)重命名
只查詢NAME一個(gè)字段并重名
IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>a.PLAYER_NAME.As("name")))
查詢多個(gè)字段
IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>new[]{a.PLAYER_NAME,a.STATUS,a.PASSWORD}))
查詢字段重命名使用as和寫sql重明名得方式一樣
IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1).Column(a=>a.PLAYER_NAME.As("name")))
6:多表連接查詢
使用 join ,left join ,right join 函數(shù)
使用 join gambleOrder連接notice表 條件為 gambleOrder.id =notice.id 寫法
List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.Join<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
使用left join gambleOrder連接notice表 條件為 gambleOrder.id =notice.id 寫法
List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.LeftJoin<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
使用right join gambleOrder連接notice表?xiàng)l件為是gambleOrder.id =notice.id 寫法
List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.RightJoin<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
多表組合連接查詢 gambleOrder join notice 在left join Info表
List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.Join<AJ.CModel.notice>((a, b) => a.id== b.id).LeftJoin<AJ.CModel.Info>((c, d) => c.id== d.id).Where(a => a.UUID > 10));
7:常用函數(shù)的使用
直接到字段選擇中就可以使用常用的函數(shù),可以隨意的進(jìn)行組合的運(yùn)算操作
使用平均函數(shù)Avg
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Avg));
使用求和函數(shù)Sum
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Sum));
組合運(yùn)算操作 求平均數(shù)在計(jì)數(shù)在除以求和數(shù)
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>(a.NICK_NAME.Avg*a.PASSWORD.Count)/a.STATUS.Sum));
8:分組排序
和數(shù)據(jù)庫的操作習(xí)慣一樣 使用GroupBy,OrderBy函數(shù)
分組 更具STATUS分組
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS));
字段分組 更具STATUS和 TYPE分組
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS & a.USER_TYPE));
排序 更具id降序排序 desc
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc));
多字段排序 更具id降序排序 desc ,TYPE升序asc
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc & a.<span style="font-size:12px; color:#666666">TYPE</span>.asc));
最能提高的就是自己研究和寫點(diǎn)框架與底層的東西,你要去查詢了解相關(guān)的知識(shí),考慮很多東西,能學(xué)到很多平時(shí)學(xué)不到不常用的知識(shí)不斷的改進(jìn)打破重構(gòu)