亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

其中的方法的使用

<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

想問下這個方法怎么使用,搞不懂

正在回答

4 回答

? ? ? ?先簡單解釋一下。getObj方法內部又調用了listObjs。listObjs返回一個list,如果有元素的話,只取第一個,沒有元素的話,返回null。第二個參數是一個Function函數式接口。就是你不想返回實體了,想返回一個自定義類型對象或其他類型對象,你要進行轉換。

看源碼,你就明白啦,給你show一下源碼

ServiceImpl類
@Override
public?<V>?V?getObj(Wrapper<T>?queryWrapper,?Function<??super?Object,?V>?mapper)?{
????return?SqlHelper.getObject(log,?listObjs(queryWrapper,?mapper));
}
SqlHelper類
/**
?*?從list中取第一條數據返回對應List中泛型的單個結果
?*
?*?@param?list?ignore
?*?@param?<E>??ignore
?*?@return?ignore
?*/
public?static?<E>?E?getObject(Log?log,?List<E>?list)?{
????if?(CollectionUtils.isNotEmpty(list))?{
????????int?size?=?list.size();
????????if?(size?>?1)?{
????????????log.warn(String.format("Warn:?execute?Method?There?are??%s?results.",?size));
????????}
????????return?list.get(0);
????}
????return?null;
}
ServiceImpl類
@Override
public?<V>?List<V>?listObjs(Wrapper<T>?queryWrapper,?Function<??super?Object,?V>?mapper)?{
????return?baseMapper.selectObjs(queryWrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList());
}


0 回復 有任何疑惑可以回復我~
@Test
public?void?getOneTest04()?{
????queryWrapper.ge("emp_age",?18);
????boolean?b?=?employeeService.getObj(queryWrapper,?(m)?->?{
????????Employee?employee?=?employeeService.getById((Long)m);
????????employee.setEmpPhone("-----");
????????boolean?flag?=?employeeService.updateById(employee);
????????return?flag;
????});
????System.out.println(b);
}

這個大概懂了,就是不知道為什么那個 m 參數是 id集合中的當前id,而不是一個 Employee集合。

然后就是傳入 wrapper 條件構造器之后,為什么就直接會有一個 id集合返回---? 哈哈哈 我還是個學生,問題就是多哦,,老師?

1 回復 有任何疑惑可以回復我~
#1

老猿

其實我也不理解,按常理來說,m參數應該是實體類,而實際測試結果它是主鍵。我也很費解作者為什么這么設計。
2019-12-26 回復 有任何疑惑可以回復我~
#2

想好好學習的懶人 提問者

謝謝指導
2019-12-27 回復 有任何疑惑可以回復我~
#3

amllng 回復 老猿

真搞不懂,返回主鍵是搞什么,如果想要對應實體的其他屬性,難道真的要在里邊再查詢一遍數據庫,然后取相應的值嗎,那我還不如自己寫sql去實現,還減少查詢。
2020-04-02 回復 有任何疑惑可以回復我~
#4

a12345531

selectObjs(queryWrapper) 只返回第一個字段的值,所以后面mapper只能拿到第一個字段的值
2022-07-14 回復 有任何疑惑可以回復我~
查看1條回復

能舉個栗子不..

0 回復 有任何疑惑可以回復我~

就是后面的那個函數式接口不會傳參?對8的特性理解不夠

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

其中的方法的使用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號