Dappers 开发入门(2) - Mapping

先来看实际调用例子 

public JsonResult List( int? TotalCount,  int? StartRecord,  int? PageSize,  string OrderBy)
        {
            QueryInfo info =  new QueryInfo( typeof(ProcessDefinitionEntity)); // 结果集转换
            info.AddParam(WebHelper.Web.UI.BindingPanel.SaveData<System.Collections.Hashtable>(Request.Form,  0)); // 查询参数组装
             base.SetPagingInfo(info, TotalCount, StartRecord, PageSize, OrderBy); // 分页信息
            info.CustomSQL =  " selectProcessDefinitionsByQueryCriteria "; // Mapping SQL

             return Json(dao.Select(info)); // Do the job!
        }

 

  •  结果集转换:任何一个SQL语句可以和任意的实体进行转换, 只是转换失败而已。Mapping首先基于EF定义的Column Attribute,如果没有定义,则默认是属性名。 如果未找到匹配则忽略。 尤其需要注意的是数据类型的转换,Dapper对此支持很弱,所以要求数据库、实体之间类型定义基本一致。
  • 参数组装:符合CVO规则的参数,都将动态组装到sql语句中, 如txt_Name_LK_ , txt_CreatedOn_GEQ_ 。除了参数值本身, 如果mapping Sql并未定义该参数,则同时将创建该语句,如: and CreatedOn >=:CreatedOn. 否则,仅提供参数值给mappingSQL
  • 分页信息: TotalCount=-1, 则激活分页。 提供的sql将自动根据 Oracle/Sql Server 分拆、组装成完整的分页语句。 通常基于rownum特性进行语句转换。
  • Mapping SQL: 此处提供的是配置文件对应的Key, 执行时内部将替换为Value
在WorkFlow.xml 中,配置了如下的mapping
< add  key ="selectTaskByQueryCriteria"  value ="select distinct T.* from ACT_RU_TASK T
      { inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = T.ID_ [candidateUser|candidateGroups|involvedUser]}
      { inner join ACT_RE_PROCDEF D on T.PROC_DEF_ID_ = D.ID_ [processDefinitionKey|processDefinitionName]}
         { where 1=1 }
         { and T.ID_ = :taskId}
         { and T.NAME_ = :name}
         { and T.NAME_ like :nameLike}
         { and T.DESCRIPTION_ = :description}
         { and T.DESCRIPTION_ like :descriptionLike}
         { and T.PRIORITY_ = :priority}
         { and T.PRIORITY_ &gt;= :minPriority}

        { and T.PRIORITY_ &lt;= :maxPriority}

 

大括号{}内都是动态语句, 中括号[]内都是匹配条件。 当条件不给定时, 默认取参数有值为条件; 当参数也不存在时,默认语句总是有效。

一旦大括号{}启动,则后续的语句都必须是动态语句。

如第一个innerjoin: 当candidate条件任一个参数给定 时(或条件), 则启用该语句。 同样可以使用 & 作为 与条件。

当界面Form提供参数 : txt_name_ 的值时 则启用 and T.NAME_ = :name 语句。

当界面Form提供参数: txt_CreatedOn_GEQ_ 的值时, 由于mapping未找到匹配, 则自动创建语句: and T.CreatedOn >= :CreatedOnGEQ

当界面Form提供参数: txt_CreatedOn_VAL_ 的值时, 由于mapping未找到匹配,VAL仅提供value, 所以改条件自动忽略。

其余的Criteria 有:  LK, RLK,LLK, EQ,GEQ,LEQ,

尤其便利的还有多个条件LK, 多参数IN的语句自动组装。 

 

转载于:https://www.cnblogs.com/crabo/archive/2012/04/09/dappers_stepbystep_02.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值