惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
T
The Blog of Author Tim Ferriss
罗磊的独立博客
The Register - Security
The Register - Security
IT之家
IT之家
D
Docker
爱范儿
爱范儿
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
L
LangChain Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
K
Kaspersky official blog
Latest news
Latest news
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
S
Schneier on Security
NISL@THU
NISL@THU
T
Tor Project blog
P
Proofpoint News Feed
N
News and Events Feed by Topic
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
L
LINUX DO - 最新话题
Help Net Security
Help Net Security
Blog — PlanetScale
Blog — PlanetScale

博客园 - craboYang

JVM: can not create native thread 注解式功能权限控制机制 SqlInXml 动态配置化 ElasticSearch5集群部署指南 Solr5 DataImport 处理1对多关系 C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程) 响应式编程 Part.01 (Layout and MVVM) Mono.Ceil 无法保存Silverlight 程序集 基于system.diagnostics Trace的日志输出 Dappers 开发入门 (5) - 缓存 Dappers 开发入门 (4) - 明细编辑 Dappers 开发入门(3)- 列表界面 Dappers 开发入门(2) - Mapping Dappers : 基于Dapper.net 扩展的Dao - Part II Dappers : 基于Dapper.net 扩展的Dao B/S页面 通用权限控制(2) B/S页面 通用数据权限控制 由于ContractFilter在EndpointDispatcher不匹配,因此Action为<BtsActionMapping...的消息无法在接收方处理 - craboYang - 博客园 WinForm DataGridView 绑定后仅显示许多空行和空格
Dappers 开发入门(1) - 接口
craboYang · 2012-04-09 · via 博客园 - craboYang

半年前已经对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 

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