<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Sunshine數據庫篇之查詢

    字體:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推薦標簽: 軟件開發 數據庫

      需要的model,數據庫映射,sql生成器都用寫的代碼生成器生成,提高開發效率
      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查詢方式
      只用使用中間語言可以提高不少效率,可以減少解析的時間,但經過測試效率提高不是非常明顯,現在.net的效率還是優化得非常不錯了,為了維護方便
      主要還是使用寫代碼的方式
      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函數進行字段選擇   as函數重命名
      只查詢NAME一個字段并重名
      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")))
      查詢多個字段
      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 函數
      使用 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表條件為是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:常用函數的使用
      直接到字段選擇中就可以使用常用的函數,可以隨意的進行組合的運算操作
      使用平均函數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));
      使用求和函數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));
      組合運算操作  求平均數在計數在除以求和數
      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:分組排序
      和數據庫的操作習慣一樣   使用GroupBy,OrderBy函數
      分組  更具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));
      最能提高的就是自己研究和寫點框架與底層的東西,你要去查詢了解相關的知識,考慮很多東西,能學到很多平時學不到不常用的知識不斷的改進打破重構

    posted on 2014-01-30 12:05 順其自然EVO 閱讀(230) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2014年1月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩中文字幕一区| 两个人日本免费完整版在线观看1| 在线免费观看中文字幕| 国产91成人精品亚洲精品| 亚洲人成伊人成综合网久久久| 99久9在线|免费| 相泽南亚洲一区二区在线播放| 亚洲午夜久久久久妓女影院| 妻子5免费完整高清电视| 香蕉97碰碰视频免费| 中文字幕亚洲免费无线观看日本| 热久久精品免费视频| 性xxxx视频免费播放直播| 亚洲AV无码成人精品区日韩 | 久久久久久av无码免费看大片| 国产曰批免费视频播放免费s| 亚洲av无码片vr一区二区三区| 亚洲成a人片77777kkkk| 免费人成网站永久| 18级成人毛片免费观看| 久久国产乱子伦精品免费看| 一本色道久久88—综合亚洲精品 | 永久看日本大片免费35分钟 | 99久久99热精品免费观看国产 | 亚洲av永久无码一区二区三区| 伊伊人成亚洲综合人网7777| 最新猫咪www免费人成| 精品免费tv久久久久久久| 精品国产日韩亚洲一区在线| 亚洲一区在线观看视频| 亚洲老妈激情一区二区三区| 国产高清在线免费视频| 国产精品久久久久免费a∨| 免费网站观看WWW在线观看| 麻豆va在线精品免费播放| www.亚洲日本| 老司机亚洲精品影院| 亚洲精品乱码久久久久久自慰| 免费大片黄手机在线观看 | 久久精品国产亚洲av成人| 久久精品亚洲福利|