👻
【Apex】よく使う処理まとめ
はじめに
Apexで個人的によく使う処理をまとめました。
やりたいこと一覧
Listが空かどうか判定する
List<String> list1 = new List<String>();
List<String> list2 = new List<String>{'apple', 'banana'};
System.debug(list1.isEmpty()); // true
System.debug(list2.isEmpty()); // false
結論
list.isEmpty()
Tips
String.isEmpty(inputString)
で文字列が ''
、もしくは null
のときに true
を返す。
String string1 = '';
String string2 = null;
String string2 = 'apple';
System.debug(String.isEmpty(string1)); // true
System.debug(String.isEmpty(string2)); // true
System.debug(String.isEmpty(string3)); // false
参考
Mapのキーをすべて取り出す
Map<String, String> colorCodes = new Map<String, String>();
colorCodes.put('Red', 'FF0000');
colorCodes.put('Blue', '0000A0');
System.debug(colorCodes.keySet()); // {'Red', 'Blue'}
結論
map.keySet()
Tips
map.keySet()
の戻り値は Set
参考
Mapの値をすべて取り出す
Map<String, String> colorCodes = new Map<String, String>();
colorCodes.put('Red', 'FF0000');
colorCodes.put('Blue', '0000A0');
System.debug(colorCodes.values()); // ('FF00000', '0000A0')
結論
map.values()
Tips
map.values()
の戻り値は List
参考
ListやSetに特定の要素を含むか判定する
List<String> fruitsList = new List<String>{'apple', 'banana'};
Set<String> fluitsSet = new Set<String>(fruitsList);
System.debug(fruitsList.contains('apple')); // true
System.debug(fruitsList.contains('melon')); // false
System.debug(fruitsSet.contains('apple')); // true
System.debug(fruitsSet.contains('melon')); // false
結論
list.contains(value)
set.contains(value)
参考
複数の親レコードと子レコードを一括で取得する
List<Account> accounts = [SELECT Name, (SELECT Name FROM Contacts)
FROM Account];
Map<Id, List<Contact>> contactMap = new Map<Id, List<Contact>>();
for (Account account : accounts) {
contactMap.put(account.Id, account.Contacts);
}
System.debug(contactMap);
// {0015j000018dA4IAAU = (),
// 0015j000019OUY9AAO = (
// Contact:{AccountId = 0015j000019OUY9AAO,
// Id = 0035j000019froQAAQ,
// Name = Gonzalez Rose},
// Contact:{AccountId = 0015j000019OUY9AAO,
// Id = 0035j000019froRAAQ,
// Name = Forbes Sean}),
// 0015j000019OUYAAA4 = (
// Contact:{AccountId = 0015j000019OUYAAA4,
// Id = 0035j000019froSAAQ,
// Name = Rogers Jack})}
結論
List<ParentApi> records = [SELECT field1,
field2,
...,
(SELECT field3,
field4,
...,
FROM (Child Relationship Name))
FROM ParentApi];
Tips
取得した子レコードには、親レコードへの参照関係項目も含まれる。
参考
終わりに
随時更新します。
Discussion