需要的model,数据库映射,sql生成器都用写的代码生成器生成,提高开发效率 1:最简单的查询单条记录 AJ.Model.User ou = IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa")); 同写sql的方式 AJ.Model.User ou = IDB.Simple("select * from User where USER_TYPE = @ut and PASSWORD = @pa", new { ut = 1, pa = "aaa" }); 2:查询多条记录 List olist = IDB.List(AJ.CModel.User.Select.Where(a=>a.UUID > 2)); 同写sql的方式 List olist = IDB.List("select * from User where uuid > @uid", new { uid = 2 }); 查询1000条30毫秒左右 3:使用直接中间语言Emit查询方式 只用使用中间语言可以提高不少效率,可以减少解析的时间,但经过测试效率提高不是非常明显,现在.net的效率还是优化得非常不错了,为了维护方便 主要还是使用写代码的方式 List olist = IDB.ListEmit(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函数进行字段选择 as函数重命名 只查询NAME一个字段并重名 IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>a.PLAYER_NAME.As("name"))) 查询多个字段 IDB.Simple(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.CModel.User.Select.Where(a => a.USER_TYPE == 1).Column(a=>a.PLAYER_NAME.As("name")))
6:多表连接查询 使用 join ,left join ,right join 函数 使用 join gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法 List olist = IDB.List(AJ.CModel.oll_user.Select.Join((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 olist = IDB.List(AJ.CModel.oll_user.Select.LeftJoin((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20)); 使用right join gambleOrder连接notice表条件为是gambleOrder.id =notice.id 写法 List olist = IDB.List(AJ.CModel.oll_user.Select.RightJoin((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20)); 多表组合连接查询 gambleOrder join notice 在left join Info表 List olist = IDB.List(AJ.CModel.oll_user.Select.Join((a, b) => a.id== b.id).LeftJoin((c, d) => c.id== d.id).Where(a => a.UUID > 10)); 7:常用函数的使用 直接到字段选择中就可以使用常用的函数,可以随意的进行组合的运算操作 使用平均函数Avg List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10) .Column(a=>a.NICK_NAME.Avg)); 使用求和函数Sum List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10) .Column(a=>a.NICK_NAME.Sum)); 组合运算操作 求平均数在计数在除以求和数 List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10) .Column(a=>(a.NICK_NAME.Avg*a.PASSWORD.Count)/a.STATUS.Sum)); 8:分组排序 和数据库的操作习惯一样 使用GroupBy,OrderBy函数 分组 更具STATUS分组 List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS)); 字段分组 更具STATUS和 TYPE分组 List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS & a.USER_TYPE)); 排序 更具id降序排序 desc List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc)); 多字段排序 更具id降序排序 desc ,TYPE升序asc List go = DataBase.IDB.List( AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc & a.TYPE.asc)); 最能提高的就是自己研究和写点框架与底层的东西,你要去查询了解相关的知识,考虑很多东西,能学到很多平时学不到不常用的知识不断的改进打破重构
最新内容请见作者的GitHub页:http://qaseven.github.io/
相关资源:敏捷开发V1.0.pptx