mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn)數(shù)據(jù)庫實(shí)體與 vo 對(duì)象轉(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 對(duì)象 */ 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 對(duì)象 */ 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é)果集,如果是多個(gè)會(huì)拋出異常,隨機(jī)取一條加上限制條件 wrapper.last("LIMIT 1")</p> * * @param kClass vo類型 * @param queryWrapper 實(shí)體對(duì)象封裝操作類 {@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é)果集,如果是多個(gè)會(huì)拋出異常,隨機(jī)取一條加上限制條件 wrapper.last("LIMIT 1")</p> * * @param convertor 轉(zhuǎn)換函數(shù) * @param queryWrapper 實(shí)體對(duì)象封裝操作類 {@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 實(shí)體對(duì)象封裝操作類 {@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 實(shí)體對(duì)象封裝操作類 {@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、實(shí)現(xiàn)vo轉(zhuǎn)換
到此這篇關(guān)于mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn) 數(shù)據(jù)庫實(shí)體與 vo 對(duì)象轉(zhuǎn)換返回的文章就介紹到這了,更多相關(guān)mybatis-plus 自定義 Service Vo接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis-plus的service通用接口解讀
- Mybatis-plus中IService接口的基本使用步驟
- MyBatis-Plus插件機(jī)制及通用Service新功能
- Mybatis-Plus接口BaseMapper與Services使用詳解
- Mybatis-Plus實(shí)體類注解方法與mapper層和service層的CRUD方法
- 詳解關(guān)于mybatis-plus中Service和Mapper的分析
- mybatis-plus批處理IService的實(shí)現(xiàn)示例
- MyBatis-Plus 通用IService使用詳解
- mybatisplus中返回Vo的案例講解
相關(guān)文章
Spring內(nèi)部bean和級(jí)聯(lián)屬性用法詳解
這篇文章主要介紹了Java內(nèi)部bean和級(jí)聯(lián)屬性用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10MyBatis-Plus如何使用枚舉自動(dòng)關(guān)聯(lián)注入詳解
這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何使用枚舉自動(dòng)關(guān)聯(lián)注入的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MyBatis-Plus具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03Java源碼解析之SortedMap和NavigableMap
今天帶大家來學(xué)習(xí)Java SortedMap和NavigableMap,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05Mybatis Plus 增刪改查的實(shí)現(xiàn)(小白教程)
本文主要介紹了Mybatis Plus 增刪改查,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java 隊(duì)列 Queue 用法實(shí)例詳解
本文實(shí)例講述了Java內(nèi)置隊(duì)列類Queue用法,分享給大家供大家參考2017-04-04Java中的排序與內(nèi)部比較器Compareable解析
這篇文章主要介紹了Java中的排序與內(nèi)部比較器Compareable解析,一般沒有特殊要求時(shí),直接調(diào)用(底層默認(rèn)的升序排列)就可以得到想要的結(jié)果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設(shè)計(jì)成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下2023-11-11SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件,感興趣的小伙伴們可以參考一下2016-06-06Java 3種方法實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換
這篇文章主要介紹了Java 3種方法實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,幫助大家利用Java處理數(shù)據(jù),感興趣的朋友可以了解下2020-09-09