本篇参考:

https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_system_custom_metadata_types.htm

https://trailhead.salesforce.com/en/content/learn/modules/platform-developer-i-certification-maintenance-winter-22/learn-whats-new-for-platform-developers-22

我们都知道salesforce里面 custom setting的使用方法,不了解的小伙伴可以开启时空门:salesforce 零基础学习(四十)Custom Settings简单使用

custom setting好用是好用,但是理解起来可以理解成特殊的表,数据还是要维护的,所以针对不同的sandbox或者生产环境,可能会有一些 manual action来维护数据或者初期的导入。所以针对 list类型的 custom setting,官方更建议使用 custom metadata type来维护。我们可以通过metadata的方式来部署这些内容,这样可以尽最大的可能去减少因为遗漏导致的数据不完整从而导致业务处理有问题的情况。

那我们之前在使用 custom metadata type特别烦人的地方是,我们需要通过搜索数据的方式来获取数据,使用方式很类似我们object的query。比如下面的demo

System.debug(LoggingLevel.INFO, '*** Limits.getQueryRows(): ' + Limits.getQueryRows());
Country_Code__mdt countryCode = [
SELECT Id, MasterLabel, Country_Code__c
FROM Country_Code__mdt
WHERE MasterLabel = 'Canada'
LIMIT 1
];
System.debug(LoggingLevel.INFO, '***after Limits.getQueryRows(): ' + Limits.getQueryRows());

使用这种方式是需要消耗SOQL的查询数量的,所以我们在实际使用时,偶尔还是会考虑取舍,使用 list custom setting而不是 custom metadat type。

针对新的release出来以后,custom metadata同样也支持了类似 custom setting的查询方式,这种既不计算了SOQL的查询数,也使得结果获取更快。方法提供了getInstance以及 getAll,demo中我们使用getInstance()方法,感兴趣的小伙伴可以查看一下上面链接的其他的方法。

System.debug(LoggingLevel.INFO, '*** Limits.getQueryRows(): ' + Limits.getQueryRows());
// Country_Code__mdt countryCode = [
// SELECT Id, MasterLabel, Country_Code__c
// FROM Country_Code__mdt
// WHERE MasterLabel = 'Canada'
// LIMIT 1
// ];
Country_Code__mdt countryCode = Country_Code__mdt.getInstance('Canada');
System.debug(LoggingLevel.INFO, '***after Limits.getQueryRows(): ' + Limits.getQueryRows());

使用getInstance方法以后的执行结果

注意点:当前的这个getInstance方法是基于winter22的更新,对应的API version为API 53,当然你如果设置API version为API52也可以正常使用的。所以如果apex中如果使用此功能,一定要记得version设置为52及以上,否则会报错。

总结:篇中简单的介绍了一下 custom metadata type的新取法,对于代码中深受 limitation所头疼的小伙伴可以考虑去进行性能调优了。当然,salesforce每一期的release都惊喜不断,大家也要多关注关注 release note哦,有用的内容找机会可以慢慢的更新一下用法。篇中有错误地方欢迎指出,有不懂欢迎留言。

salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新的更多相关文章

  1. salesforce 零基础学习(四十一)Group

    salesforce中,有的时候我们需要将一组用户放进一个Group,用来实现以下主要功能: 1.通过sharing rule设置默认的共享访问; 2.将记录分享给其他用户; 3.指定同步的联系人,这 ...

  2. salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现

    有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...

  3. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  4. salesforce零基础学习(八十一)更改标准字段的label名称(Admin)

    我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如pick ...

  5. salesforce 零基础学习(三十一)关于LookUp字段点击Save时的Validation

    今天在群里大概遇到了这样一个问题,明明这个User存在,但是save的时候提示信息说Value不存在,大概的意思如下图所示,目前认为这种问题常见的可能情况有两种. 一.此字段设置Validation ...

  6. salesforce 零基础学习(二十一)workflow Q&A

    有一篇内容专门写了workflow,后来用到的时候心生疑问,不知道小伙伴有没有和我想法一样的,workflow具体内容原来已经说过,不在过多叙述,只说一下运行条件. 那就是:当满足运行条件时,执行相关 ...

  7. salesforce零基础学习(七十一)级联表DML操作

    曾经做项目没有考虑那么多,对于级联表操作都是正常的一步一步操作,没有考虑过失败情况,最近项目遇见了失败的情况,导致碰到了相应的情况,特此mark一下,免得后期继续踩坑. 需求如下:新建页面,页面中包含 ...

  8. salesforce零基础学习(九十一)Facet

    说Facet以前,我们先说一下浏览器加载解析以及渲染的过程.浏览器获取一个HTML的文件时,会按照自上向下的顺序进行解析,并在加载过程中进行渲染.对html解析成DOM树,对CSS 解析成CSS Ru ...

  9. salesforce 零基础学习(二十八)使用ajax方式实现联动

    之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoti ...

随机推荐

  1. ZOJ 3960:What Kind of Friends Are You?

    What Kind of Friends Are You? Time Limit: 1 Second Memory Limit: 65536 KB Japari Park is a large zoo ...

  2. request参数获取,参数校验,参数处理

    需求: 1.post接口,需要在过滤器中进行参数校验,校验通过之后再执行方法 2.原有代码中使用x-www-form-urlencoded传参,新需求要使用json格式 3.原有代码校验过滤器使用Se ...

  3. CapstoneCS5212替代RTD2166|DP转VGA转换电路设计方法|CS5212替代方案

    Capstone CS5212适用于设计DP转VGA转换电路,主要用在嵌入式单片机基于工业机或者INTEL X86主板上面,也适用于多个电子配件市场和显示器应用程序,如笔记本电脑.主板.台式机.适配器 ...

  4. Java初学者作业——用户输入一个小数,程序分解出整数部分和小数部分。

    返回本章节 返回作业目录 需求说明: 用户输入一个小数,程序分解出整数部分和小数部分. 实现思路: 接收用户控制台输入的小数. 用强制类型转换将整数部分得到. 使用用户输入的小数减去整数部分得到小数部 ...

  5. CF858D Polycarp's phone book

    题意翻译 有 n 个长度为 9 且只包含数字字符互不相同的串. 需要对于每个串找到一个长度最短的识别码,使得这个识别码当且仅当为这个串的子串. 题目分析 因为范围不是非常大,所以可以将子串筛出来 然后 ...

  6. Linux下配置GitHub

    一.注册GitHub账号 二.在linux命令行输入 git config --global user.name "YOUR NAME" #配置github账号 git confi ...

  7. ES6常用知识点

    一.变量 var:定义的变量有时候会成为全局变量 let:定义的变量严格,只在代码块内有效 const:声明的变量是常量,不能被修改 二.数据类型 字符串 @定义:~字符串定义标记,支持换行.  #常 ...

  8. js对象数组多字段排序

    来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...

  9. 从如何使用到如何实现一个Promise

    前言 这篇文章我们一起来学习如何使用Promise,以及如何实现一个自己的Promise,讲解非常清楚,全程一步一步往后实现,附带详细注释与原理讲解. 如果你觉的这篇文章有帮助到你,️关注+点赞️鼓励 ...

  10. Kube-OVN 0.6.0 发布,支持 IPv6、流量镜像及更多功能

    Kube-OVN 是一个基于 OVN 的 Kubernetes 开源网络系统. 本次更新主要包含了以下内容: 1. 支持流量镜像 在安装 Kube-OVN 时可以开启 mirror 选项,会自动在每个 ...