索引: 目錄索引 一.API 列表 1.WhereSegment 屬性,指示 根據條件 動態拼接 where 查詢過濾條件 見如下示例. 二.API 單表-完整 方法 舉例 以 MySQL 為例,生成 SQL 如下,其中 ?Name_2 的值自動生成為 【伏%】 : 三.API 多表-連接 方法 舉 ...
索引:
一.API 列表
1.WhereSegment 屬性,指示 根據條件 動態拼接 where 查詢過濾條件
見如下示例.
二.API 單表-完整 方法 舉例
1 // 上下文條件 變數 2 var userId = "08d6036b-0a7e-b07d-b9bd-af03841b3baa"; 3 var firstName = "伏"; 4 5 var where = Conn.Queryer<Agent>().WhereSegment; 6 7 // 根據條件 判斷 是否 拼接 UserId 欄位 的 過濾條件 8 if (!userId.IsNullStr()) 9 { 10 where = where.And(it => it.UserId == Guid.Parse(userId)); 11 } 12 13 // 根據條件 判斷 是否 拼接 Name 欄位 的 過濾條件 14 if (!firstName.IsNullStr()) 15 { 16 where = where.And(it => it.Name.StartsWith(firstName)); 17 } 18 19 // 對 WhereSegment 設定的條件 進行 select 動作 20 var res1 = await where.QueryListAsync(); 21 22 Assert.True(res1.Count==1);
以 MySQL 為例,生成 SQL 如下,其中 ?Name_2 的值自動生成為 【伏%】 :
1 select * 2 from `agent` where true 3 and `UserId`=?UserId_1 4 and `Name` like ?Name_2;
三.API 多表-連接 方法 舉例
1 // 上下文 分頁 變數 2 var pageIndex = 2; 3 var pageSize = 10; 4 5 // 上下文 條件 變數 6 var level = (Nullable<AgentLevel>)AgentLevel.DistiAgent; 7 var pk1 = Guid.Parse("fbad4af4-c160-4e66-a8fc-0165443b4db0"); 8 9 // 可 自由混合書寫 多個 inner join 或 left join 10 var where = Conn 11 .Queryer(out Agent agent, out AgentInventoryRecord record) 12 .From(() => agent) 13 .LeftJoin(() => record) 14 .On(() => agent.Id == record.AgentId).WhereSegment; 15 16 // 根據條件 判斷 是否 拼接 AgentLevel 欄位 的 過濾條件 17 if (level != null) 18 { 19 where = where.And(() => agent.AgentLevel == level); // and demo 20 } 21 22 // 根據條件 判斷 是否 拼接 Id 欄位 的 過濾條件 23 if (pk1 != Guid.Empty) 24 { 25 where = where.Or(() => agent.Id == pk1); // or demo 26 } 27 28 // 對 WhereSegment 設定的條件 進行 select 動作 29 var res1 = await where.QueryPagingAsync<Agent>(pageIndex, pageSize); 30 31 Assert.True(res1.Data.Count == 10); 32 Assert.True(res1.TotalCount == 575);
以 MySQL 為例,生成 SQL 如下:
1 -- 總數據量 sql 2 3 select count(*) 4 from ( 5 select agent.`*` 6 from `agent` as agent 7 left join `agentinventoryrecord` as record 8 on agent.`Id`=record.`AgentId` where true 9 and agent.`AgentLevel`=?AgentLevel_4 10 or agent.`Id`=?Id_5 11 ) temp; 12 13 -- 分頁數據 sql 14 15 select agent.`*` 16 from `agent` as agent 17 left join `agentinventoryrecord` as record 18 on agent.`Id`=record.`AgentId` where true 19 and agent.`AgentLevel`=?AgentLevel_4 20 or agent.`Id`=?Id_5 21 order by agent.`Id` desc 22 limit 10,10;
蒙
2019-04-18 23:30 周四