MyDAL - .Where() & .And() & .Or() 使用
索引:
一.api 列表
1.where
.where(func<m, bool> func)
如: .where( it => (it.prop1>=条件1 && it.prop2<=条件2) || it.prop3==条件3 ) 此类写法,用在 deleter/updater/selecter 中.
.where(func<bool>)
如: .where( () => m1.propx==条件1 || m2.propy>条件2 && m3.propz<条件3 ) 此类写法,用在 joiner 中.
2.and
.and(func<m, bool> func) 同 .where(func<m, bool> func) .
.and(func<bool>) 同 .where(func<bool>) .
3.or
.or(func<m, bool> func) 同 .where(func<m, bool> func) .
.or(func<bool>) 同 .where(func<bool>) .
注: where and or 三个 api 是可以组合使用的,我在这里将他们的关系 处理为 sql 中同样的用法,
即一个 sql 查询中只可以点出一个where,但可以点出多个and 或 or
如: ...where(xxx).and(yyy).or(mmm).and(zzz)..... .
二.使用举例
1.删除数据
1 var path = "~00-c-1-2-1-1-1-1-1-4-1-1-1-4-1-2-1-7"; 2 var level = 2; 3 // where and 4 var res3 = await conn 5 .deleter<agent>() 6 .where(it => it.pathid == path) 7 .and(it => it.agentlevel == (agentlevel)level) 8 .deleteasync();
生成的 sql 如下
1 delete 2 from `agent` 3 where `pathid`=@pathid__1 4 and `agentlevel`=@agentlevel__2 ;
2.更新数据
1 var res8 = await conn 2 .updater<agent>() 3 .set(it => it.agentlevel, agentlevel.newcustomer) 4 .where(it => it.id == guid.parse("0014f62d-2a96-4b5b-b4bd-01654438e3d4")) 5 .updateasync();
生成 sql 如下
1 update `agent` 2 set `agentlevel`=@agentlevel__1 3 where `id`=@id__2 ;
3.单表查询数据
1 var guid4 = guid.parse("000cecd5-56dc-4085-804b-0165443bdf5d"); 2 var pathid4 = "~00-d-3-2-1-c-2-f-4-3-1-2-4"; 3 var level4 = agentlevel.customer; 4 var res4 = await conn 5 .selecter<agent>() 6 .where(it => it.id == guid4 && it.agentlevel==level4 && it.pathid == pathid4) 7 .listasync();
生成 sql 如下
1 select * 2 from `agent` 3 where (( `id`=@id__3 && `agentlevel`=@agentlevel__4 ) && `pathid`=@pathid__5 ) 4 order by `createdon` desc ;
4.连接查询数据
1 var res6 = await conn 2 .joiner<agent, agentinventoryrecord>(out var agent6, out var record6) 3 .from(() => agent6) 4 .innerjoin(() => record6) 5 .on(() => agent6.id == record6.agentid) 6 .where(() => agent6.id == guid6) 7 .firstordefaultasync<agent>();
生成的 sql 如下
1 select agent6.`*` 2 from `agent` as agent6 3 inner join agentinventoryrecord as record6 4 on agent6.`id`=record6.`agentid` 5 where agent6.`id`=@id__4 6 order by agent6.`createdon` desc ;
蒙
2018-11-18 16:32 周日
上一篇: 扩展mybatis重写mybatis执行器实现灵活批处理
下一篇: 三岁的女儿跟我去逛街乐趣无穷