mybatisplus中返回Vo的案例講解
注意: mybatisplus內(nèi)置的幾個(gè)方法使用泛型限制了方法的返回類型,
所以實(shí)現(xiàn)返回Vo還是得自定義方法, 這個(gè)方法名盡量不要和原有的名字類似
(以免出問題), 采用mybatisplus就是想借用它的wrapper的便利.
另外, 如果不采用vo, 而是直接ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle加入為entity中屬性(對(duì)這幾個(gè)屬性取消持久化 ), 然后直接修改page方法對(duì)應(yīng)的xml, 這么做雖然可以返回你要的結(jié)果, 但是, 前端傳入entity對(duì)象作為查詢參數(shù)時(shí), 假如這幾個(gè)屬性存在非空值, 那么mybatisplus會(huì)映射到sql中去, 這樣sql就報(bào)錯(cuò)了, 因?yàn)閿?shù)據(jù)庫沒這幾個(gè)字段
(除非你禁止這幾個(gè)參數(shù)的反序列化或者對(duì)mybatisplus wrapper 過濾掉這幾個(gè)屬性, 先不說fastjson的反序列化在這幾個(gè)屬性上用沒有bug, 這樣做會(huì)讓代碼不優(yōu)雅,耦合也高, swagger ui也沒寫清楚, 所以還是采用vo的好)
1.定義Vo (extends 實(shí)體類然后加幾個(gè)非持久化字段), 作為返回
—不用map作為返回的原因是, 對(duì)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)容請(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使用詳解
- mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn)數(shù)據(jù)庫實(shí)體與 vo 對(duì)象轉(zhuǎn)換返回功能
相關(guān)文章
SpringBoot跨域Access-Control-Allow-Origin實(shí)現(xiàn)解析
這篇文章主要介紹了SpringBoot跨域Access-Control-Allow-Origin實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12RocketMQ?NameServer架構(gòu)設(shè)計(jì)啟動(dòng)流程
這篇文章主要為大家介紹了RocketMQ?NameServer架構(gòu)設(shè)計(jì)啟動(dòng)流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java ThreadLocal詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
ThreadLocal,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲(chǔ),本文會(huì)詳細(xì)的介紹一下,有興趣的可以了解一下2017-06-06SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由的詳細(xì)搭建
這篇文章主要介紹了SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由,本文通過圖文實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Java設(shè)計(jì)模式中組合模式應(yīng)用詳解
組合模式,又叫部分整體模式,它創(chuàng)建了對(duì)象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下2022-11-11