mybatis-plus 自定義 Service Vo接口實現(xiàn)數(shù)據(jù)庫實體與 vo 對象轉(zhuǎn)換返回功能
1、自定義service 轉(zhuǎn)換 類
public interface IServicePlus extends IService {
/** * 根據(jù) ID 查詢 * * @param kClass vo類型 * @param id 主鍵ID */ default <K> K getVoById(Serializable id, Class<K> kClass) { T t = getBaseMapper().selectById(id); return BeanUtil.toBean(t, kClass); } /** * 根據(jù) ID 查詢 * * @param id 主鍵ID * @param convertor 轉(zhuǎn)換函數(shù) * @param <K> vo類型 */ default <K> K getVoById(Serializable id, Function<T, K> convertor) { T t = getBaseMapper().selectById(id); return convertor.apply(t); } /** * 查詢(根據(jù)ID 批量查詢) * * @param kClass vo類型 * @param idList 主鍵ID列表 */ default <K> List<K> listVoByIds(Collection<? extends Serializable> idList, Class<K> kClass) { List<T> list = getBaseMapper().selectBatchIds(idList); if (list == null) { return null; } return list.stream() .map(any -> BeanUtil.toBean(any, kClass)) .collect(Collectors.toList()); } /** * 查詢(根據(jù)ID 批量查詢) * * @param convertor 轉(zhuǎn)換函數(shù) * @param idList 主鍵ID列表 */ default <K> List<K> listVoByIds(Collection<? extends Serializable> idList, Function<Collection<T>, List<K>> convertor) { List<T> list = getBaseMapper().selectBatchIds(idList); if (list == null) { return null; } return convertor.apply(list); } /** * 查詢(根據(jù) columnMap 條件) * * @param kClass vo類型 * @param columnMap 表字段 map 對象 */ default <K> List<K> listVoByMap(Map<String, Object> columnMap, Class<K> kClass) { List<T> list = getBaseMapper().selectByMap(columnMap); if (list == null) { return null; } return list.stream() .map(any -> BeanUtil.toBean(any, kClass)) .collect(Collectors.toList()); } /** * 查詢(根據(jù) columnMap 條件) * * @param convertor 轉(zhuǎn)換函數(shù) * @param columnMap 表字段 map 對象 */ default <K> List<K> listVoByMap(Map<String, Object> columnMap, Function<Collection<T>, List<K>> convertor) { List<T> list = getBaseMapper().selectByMap(columnMap); if (list == null) { return null; } return convertor.apply(list); } /** * 根據(jù) Wrapper,查詢一條記錄 <br/> * <p>結(jié)果集,如果是多個會拋出異常,隨機取一條加上限制條件 wrapper.last("LIMIT 1")</p> * * @param kClass vo類型 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ default <K> K getVoOne(Wrapper<T> queryWrapper, Class<K> kClass) { return BeanUtil.toBean(getOne(queryWrapper, true), kClass); } /** * 根據(jù) Wrapper,查詢一條記錄 <br/> * <p>結(jié)果集,如果是多個會拋出異常,隨機取一條加上限制條件 wrapper.last("LIMIT 1")</p> * * @param convertor 轉(zhuǎn)換函數(shù) * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ default <K> K getVoOne(Wrapper<T> queryWrapper, Function<T, K> convertor) { return convertor.apply(getOne(queryWrapper, true)); } /** * 查詢列表 * * @param kClass vo類型 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ default <K> List<K> listVo(Wrapper<T> queryWrapper, Class<K> kClass) { List<T> list = getBaseMapper().selectList(queryWrapper); if (list == null) { return null; } return list.stream() .map(any -> BeanUtil.toBean(any, kClass)) .collect(Collectors.toList()); } /** * 查詢列表 * * @param convertor 轉(zhuǎn)換函數(shù) * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ default <K> List<K> listVo(Wrapper<T> queryWrapper, Function<Collection<T>, List<K>> convertor) { List<T> list = getBaseMapper().selectList(queryWrapper); if (list == null) { return null; } return convertor.apply(list); } /** * 查詢所有 * * @param kClass vo類型 * @see Wrappers#emptyWrapper() */ default <K> List<K> listVo(Class<K> kClass) { return listVo(Wrappers.emptyWrapper(), kClass); } /** * 查詢所有 * * @param convertor 轉(zhuǎn)換函數(shù) * @see Wrappers#emptyWrapper() */ default <K> List<K> listVo(Function<Collection<T>, List<K>> convertor) { return listVo(Wrappers.emptyWrapper(), convertor); }
}
2、接口繼承
3、實現(xiàn)vo轉(zhuǎn)換
到此這篇關(guān)于mybatis-plus 自定義 Service Vo接口實現(xiàn) 數(shù)據(jù)庫實體與 vo 對象轉(zhuǎn)換返回的文章就介紹到這了,更多相關(guān)mybatis-plus 自定義 Service Vo接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring內(nèi)部bean和級聯(lián)屬性用法詳解
這篇文章主要介紹了Java內(nèi)部bean和級聯(lián)屬性用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入詳解
這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MyBatis-Plus具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03Java源碼解析之SortedMap和NavigableMap
今天帶大家來學(xué)習(xí)Java SortedMap和NavigableMap,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05Mybatis Plus 增刪改查的實現(xiàn)(小白教程)
本文主要介紹了Mybatis Plus 增刪改查,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Java中的排序與內(nèi)部比較器Compareable解析
這篇文章主要介紹了Java中的排序與內(nèi)部比較器Compareable解析,一般沒有特殊要求時,直接調(diào)用(底層默認的升序排列)就可以得到想要的結(jié)果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設(shè)計成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下2023-11-11SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件,感興趣的小伙伴們可以參考一下2016-06-06