mybatisplus中返回Vo的案例講解
注意: mybatisplus內(nèi)置的幾個方法使用泛型限制了方法的返回類型,
所以實現(xiàn)返回Vo還是得自定義方法, 這個方法名盡量不要和原有的名字類似
(以免出問題), 采用mybatisplus就是想借用它的wrapper的便利.
另外, 如果不采用vo, 而是直接ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle加入為entity中屬性(對這幾個屬性取消持久化 ), 然后直接修改page方法對應(yīng)的xml, 這么做雖然可以返回你要的結(jié)果, 但是, 前端傳入entity對象作為查詢參數(shù)時, 假如這幾個屬性存在非空值, 那么mybatisplus會映射到sql中去, 這樣sql就報錯了, 因為數(shù)據(jù)庫沒這幾個字段
(除非你禁止這幾個參數(shù)的反序列化或者對mybatisplus wrapper 過濾掉這幾個屬性, 先不說fastjson的反序列化在這幾個屬性上用沒有bug, 這樣做會讓代碼不優(yōu)雅,耦合也高, swagger ui也沒寫清楚, 所以還是采用vo的好)
1.定義Vo (extends 實體類然后加幾個非持久化字段), 作為返回
—不用map作為返回的原因是, 對swagger-api不友好
2.xml 如下(就用mybaisplus, 不想用mybatis)
<select id="selectPageVo" resultType="com.DailyReportVo"> select ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle, n.* from nst_daily_report n LEFT JOIN sys_user sa on n.appraiser_id = sa.id LEFT JOIN sys_user ss on n.submitter_id = ss.id <where> ${ew.sqlSegment} </where> </select>
3.service
public interface IDailyReportService extends IService<DailyReport> { IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper); }
@Service public class DailyReportServiceImpl extends ServiceImpl<DailyReportMapper, DailyReport> implements IDailyReportService { @Override public IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper) { return this.baseMapper.selectPageVo(page, queryWrapper); } }
4.controller
@GetMapping(value = "/list") public Result<IPage<DailyReportVo>> queryPageList(DailyReport dailyReport, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req){ DailyReportVo dailyReportVo = new DailyReportVo(); BeanUtils.copyProperties(dailyReportVo,dailyReport); Result<IPage<DailyReportVo>> result = new Result<>(); QueryWrapper<DailyReportVo> queryWrapper = QueryGenerator.initQueryWrapper(dailyReportVo, req.getParameterMap()); Page<DailyReportVo> page = new Page<>(pageNo, pageSize); IPage<DailyReportVo> pageList = dailyReportService.selectPageVo(page, queryWrapper); result.setSuccess(true); result.setResult(pageList); return result; }
到此這篇關(guān)于mybatisplus中返回Vo的文章就介紹到這了,更多相關(guān)mybatisplus返回Vo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis-plus的service通用接口解讀
- Mybatis-plus中IService接口的基本使用步驟
- MyBatis-Plus插件機(jī)制及通用Service新功能
- Mybatis-Plus接口BaseMapper與Services使用詳解
- Mybatis-Plus實體類注解方法與mapper層和service層的CRUD方法
- 詳解關(guān)于mybatis-plus中Service和Mapper的分析
- mybatis-plus批處理IService的實現(xiàn)示例
- MyBatis-Plus 通用IService使用詳解
- mybatis-plus 自定義 Service Vo接口實現(xiàn)數(shù)據(jù)庫實體與 vo 對象轉(zhuǎn)換返回功能
相關(guān)文章
SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析
這篇文章主要介紹了SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12RocketMQ?NameServer架構(gòu)設(shè)計啟動流程
這篇文章主要為大家介紹了RocketMQ?NameServer架構(gòu)設(shè)計啟動流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java ThreadLocal詳解_動力節(jié)點Java學(xué)院整理
ThreadLocal,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲,本文會詳細(xì)的介紹一下,有興趣的可以了解一下2017-06-06SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由的詳細(xì)搭建
這篇文章主要介紹了SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由,本文通過圖文實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08