mybatis-plus 返回部分字段的解決方式
mybatis-plus的代碼生成器會在實體類中生成數(shù)據(jù)庫所有字段,我們?nèi)ビ胢apper接口查詢時,會返回數(shù)據(jù)庫所有的字段。
但有些字段不是我們想要的,比如:deleted,所以我們可以在不需要的字段上面加@JsonIgnore注解,返回給前端的時候會自動把這個字段去除。
補(bǔ)充知識:Mybatis-Plus只查詢特定字段與創(chuàng)建子類方法
Mybatis-Plus查詢特定字段例子:
Seal seal = sealService.selectOne(
new EntityWrapper<Seal>().setSqlSelect("sealName").eq("sealId",auditProcess.getSealId()));
其中這里的seal是一個自定義類。"sealName"是數(shù)據(jù)庫表seal的一個字段,這句查詢只查到id為 auditProcess.getSealId() 的seal的名稱。其余字段為null
創(chuàng)建子類方法。
一般需要聯(lián)表的情況,又不想寫sql語句,可以試下這種方法(至于效率,我也沒有測試過)
上個例子
Manager類
/** * <p> * * </p> * * @author onee123 * @since 2019-03-03 */ @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("_manager") public class Manager extends Model<Manager> { private static final long serialVersionUID = 1L; /** * 管理員id */ @TableId(value = "manager_id",type = IdType.UUID) private String managerId; /** * 賬號 */ @TableField("manager_phone") private String managerPhone; /** * 密碼 */ @TableField("manager_pass") private String managerPass; /** * 姓名 */ @TableField("manager_name") private String managerName; /** * 郵箱 */ @TableField("manager_email") private String managerEmail; /** * 狀態(tài)(0:1-刪除:啟動) */ @TableField("manager_status") private Integer managerStatus; /** * 權(quán)限id */ @TableField("role_id") private String roleId; /** * 部門 */ @TableField("manager_department") private String managerDepartment; /** * 創(chuàng)建時間 */ @TableField("manager_create_time") private Date managerCreateTime; /** * 最近登陸時間 */ @TableField("manager_login_time") private Date managerLoginTime; @Override protected Serializable pkVal() { return this.managerId; } }
Seal類
/** * <p> * * </p> * * @author wihenne123 * @since 2020-04-24 */ @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("_seal") public class Seal extends Model<Seal> { private static final long serialVersionUID = 1L; /** * 印章id */ @TableId(value="seal_id",type = IdType.UUID) private String sealId; /** * 印章名 */ @TableField("seal_name") private String sealName; /** * 圖片路徑 */ @TableField("picture_path") private String picturePath; /** * 創(chuàng)建時間 */ @TableField("create_time") private Date createTime; /** * 更新時間 */ @TableField("update_time") private Date updateTime; /** * (-1:0:1 - 刪除:停用:啟用) */ @TableField("seal_status") private Integer sealStatus; @Override protected Serializable pkVal() { return this.sealId; } }
AuditProcess類,其中managerId和sealId需要對應(yīng)上面兩個表。
/** * <p> * * </p> * * @author wihenne123 * @since 2020-04-24 */ @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("_audit_process") public class AuditProcess extends Model<AuditProcess> { private static final long serialVersionUID = 1L; /** * 流程圖id */ @TableId(value = "audit_id", type = IdType.AUTO) private Integer auditId; /** * 流程名稱 */ @TableField("audit_name") private String auditName; /** * 審核順序(,隔開-店長用shopManager表示) */ @TableField("audit_sort") private String auditSort; /** * 狀態(tài)(-1:0:1-刪除:停用:啟用) */ @TableField("audit_status") private Integer auditStatus; /** * 創(chuàng)建時間 */ @TableField("create_time") private Date createTime; /** * 更新時間 */ @TableField("update_time") private Date updateTime; /** * 印章id(無則為0) */ @TableField("seal_id") private String sealId; /** * 創(chuàng)建人id */ @TableField("manager_id") private String managerId; /** * 印章x位置 */ @TableField("seal_x") private Double sealX; /** * 印章y位置 */ @TableField("seal_y") private Double sealY; /** * 印章大小 */ @TableField("seal_size") private Double sealSize; /** * 印章所在頁碼 */ @TableField("seal_page") private Integer sealPage; /** * 序號x位置 */ @TableField("num_x") private Double numX; /** * 序號y位置 */ @TableField("num_y") private Double numY; /** * 序號大小 */ @TableField("num_size") private Double numSize; /** * 序號所在頁碼 */ @TableField("num_page") private Integer numPage; /** * pdf文件demo路徑 */ @TableField("pdf_demo_path") private String pdfDemoPath; /** * 反饋文件路徑 */ @TableField("result_file_path") private String resultFilePath; /** * 最大打印次數(shù) */ @TableField("print_size") private Integer printSize; @Override protected Serializable pkVal() { return this.auditId; } }
這時候我只需要對應(yīng)id的類的名稱,所以我設(shè)置了vo類作為子類
然后在接口里面寫轉(zhuǎn)換方法
/** * <p> * 服務(wù)實現(xiàn)類 * </p> * * @author wihenne123 * @since 2020-04-23 */ @Service public class AuditProcessServiceImpl extends ServiceImpl<AuditProcessMapper, AuditProcess> implements AuditProcessService { @Autowired ManagerService managerService; @Autowired SealService sealService; @Autowired AuditProcessService auditProcessService; @Override public List<AuditProcessVo> auditProcessToVo(List<AuditProcess> auditProcessList) { List<AuditProcessVo> auditProcessVos = new ArrayList<>(); for(AuditProcess auditProcess:auditProcessList){ //遍歷list auditProcessVos.add(auditProcessToVo(auditProcess)); } return auditProcessVos; } @Override public AuditProcessVo auditProcessToVo(AuditProcess auditProcess) { AuditProcessVo auditProcessVo = new AuditProcessVo(); BeanUtils.copyProperties(auditProcess,auditProcessVo); //復(fù)制進(jìn)vo類 Manager manager = managerService.selectOne( new EntityWrapper<Manager>().setSqlSelect("manager_name","manager_department").eq("manager_id",auditProcess.getManagerId())); //加入字段值 auditProcessVo.setManagerName(manager.getManagerName()); auditProcessVo.setManagerDepartment(manager.getManagerDepartment()); if(auditProcess.getSealId() != null){ Seal seal = sealService.selectOne( new EntityWrapper<Seal>().setSqlSelect("seal_name").eq("seal_id",auditProcess.getSealId())); if(seal != null){ auditProcessVo.setSealName(seal.getSealName()); } }else { auditProcessVo.setSealName("無"); } return auditProcessVo; } }
再想調(diào)用時直接調(diào)用就可以了
以上這篇mybatis-plus 返回部分字段的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談java.util.concurrent包中的線程池和消息隊列
這篇文章主要介紹了淺談java.util.concurrent包中的線程池和消息隊列,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08SpringMVC實現(xiàn)前端后臺交互傳遞數(shù)據(jù)
本篇文章主要介紹了SpringMVC實現(xiàn)前端后臺傳遞數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03httpclient模擬post請求json封裝表單數(shù)據(jù)的實現(xiàn)方法
下面小編就為大家?guī)硪黄猦ttpclient模擬post請求json封裝表單數(shù)據(jù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12Java輕松實現(xiàn)批量插入或刪除Excel行列操作
在職場生活中,對Excel工作表的行和列進(jìn)行操作是非常普遍的需求,下面小編就來和大家介紹一下如何在Java中完成批量插入、刪除行和列的操作吧2023-10-10關(guān)于Java集合框架Collection接口詳解
這篇文章主要介紹了關(guān)于Java集合框架Collection接口詳解,Collection接口是Java集合框架中的基礎(chǔ)接口,定義了一些基本的集合操作,包括添加元素、刪除元素、遍歷集合等,需要的朋友可以參考下2023-05-05java實現(xiàn)多線程的兩種方式繼承Thread類和實現(xiàn)Runnable接口的方法
下面小編就為大家?guī)硪黄猨ava實現(xiàn)多線程的兩種方式繼承Thread類和實現(xiàn)Runnable接口的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09SpringMVC實現(xiàn)Validation校驗過程詳解
這篇文章主要介紹了SpringMVC實現(xiàn)Validation校驗過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11