• 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与组装, 请见下一篇。

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/crabo/p/2438566.html
Copyright © 2020-2023  润新知