zoukankan      html  css  js  c++  java
  • Dappers 开发入门(1) 接口

    半年前已经对Dapper (StackOverflow.com使用的Micro-OM框架)进行了简单的包装。 结合目前的开发框架,目前已经完成了 Activiti5.9 (www.activiti.org) 流程引擎的.NET 迁移,同时在公司项目中也进行了深入的实践。陆续会推出完整的框架体系介绍。

    目前, Dappers = Dapper + myBatis

    • Mapping元数据描述

        [System.Data.Linq.Mapping.Table(Name="SYS_PROPERTY")] 

        public class SysProperty : PersistentObject 
        { 
            [System.Data.Linq.Mapping.Column(Expression="Ignore")] 
            public override string Id 
            { 
                getreturn base.Id;} 
                set{base.Id = value;} 
            } 
            [System.Data.Linq.Mapping.Column(Name="Name",IsPrimaryKey=true)] 
            public string Name { getset; } 
            public string Value { getset; }        
        }
    • 新增、修改、删除一个对象

            [HttpPost] 

            public ActionResult Edit(SysOffice o) 
            { 
                if (base.IsDelete) 
                    o.DeletedState=true;
                svc.UpdateOrInsert(o); 
                return base.OpResult; 
            }
    • 查询

    1. 单一对象查找接口:

            T SelectOne<T>(string mapSql, object param);
            T SelectById<T>(string id);
            object SelectById(Type type, string id);

            

            public JsonResult Load(string id) 

            { 
                SysOffice obj = null
                if (!string.IsNullOrEmpty(id)) 
                     obj = dao.SelectById<SysOffice>(id); 
                return Json(obj); 
            }

    2.结果集查找:

    List SelectList(string mapSql, object param);

    List  SelectList(QueryInfo info);

    QueryInfo Select(QueryInfo info);

    //返回所有Office对象: 根据SysOffice元数据定义,自动创建并缓存该Select 语句
            public ActionResult List(int? pPageSize, int? pPageIndex) 
            { 
                info = new QueryInfo(typeof(SysOffice)); 
                info = dao.Select(info); 
                return View(info); 
            }
    //找出所有的流程定义
            QueryInfo info = new QueryInfo(typeof(ProcessDefinitionEntity)); 
             info.CustomSQL = "selectProcessDefinitionsByQueryCriteria";
            return Json(dao.Select(info));
            此时“selectProcessDefinitionsByQueryCriteria”对应的就是类似myBatis的基于key-value的外部sql配置语句。
     

    3.Linq式查找

    IEnumerable<T> Select<T>(System.Linq.Expressions.Expression<Func<T, bool>> where);
    IEnumerable<T> Select<T>(string mapSql, System.Linq.Expressions.Expression<Func<T, bool>> where);

    //根据SysUser自动创建select语句,并提供UserCode匹配查询
            public ContentResult GetUserName(string userCode) 
            { 
                if (!string.IsNullOrEmpty(userCode)) 
                { 
                    var obj = dao.Select<SysUser>(m => m.UserCode == userCode).SingleOrDefault();
                    if (obj != null
                        return Content(obj.Name); 
                }
                return Content(string.Empty); 
            }
    //同理,可以额外提供mappingSql 的key, 从而在已有sql的基础上动态匹配、组装UserCode条件。

    MappingSql与组装, 请见下一篇。

  • 相关阅读:
    计蒜客 聪明的班主任(思维)
    codeforces 456 E. Civilization(并查集+数的直径)
    codeforces 456 D. A Lot of Games(字典数+博弈+思维+树形dp)
    codeforces 233 D. Table(思维+dp )
    codeforces 233 C. Cycles(贪心+思维)
    codeforces 814 D. An overnight dance in discotheque (贪心+bfs)
    codeforces 814 C. An impassioned circulation of affection(二分+思维)
    codeforces 813 D. Two Melodies(dp)
    Atcoder F
    Java正则表达式
  • 原文地址:https://www.cnblogs.com/crabo/p/2438566.html
Copyright © 2011-2022 走看看