mybatis-plus 返回部分字段的解決方式
mybatis-plus的代碼生成器會在實體類中生成數(shù)據(jù)庫所有字段,我們?nèi)ビ胢apper接口查詢時,會返回數(shù)據(jù)庫所有的字段。
但有些字段不是我們想要的,比如:deleted,所以我們可以在不需要的字段上面加@JsonIgnore注解,返回給前端的時候會自動把這個字段去除。
補充知識: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ù)制進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)文章
Flyway詳解及Springboot集成Flyway的詳細教程
Flayway是一款數(shù)據(jù)庫版本控制管理工具,,支持數(shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里。這篇文章主要介紹了Flyway詳解及Springboot集成Flyway的詳細教程的相關(guān)資料,需要的朋友可以參考下2020-07-07
Java?CopyOnWriteArrayList源碼超詳細分析
為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類,下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11
springboot中使用jpa下hibernate的ddl-auto方式
這篇文章主要介紹了springboot中使用jpa下hibernate的ddl-auto方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
詳解IDEA用maven創(chuàng)建springMVC項目和配置
本篇文章主要介紹了詳解IDEA用maven創(chuàng)建springMVC項目和配置 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
Spring Boot項目如何同時支持HTTP和HTTPS協(xié)議的實現(xiàn)
這篇文章主要介紹了Spring Boot項目如何同時支持HTTP和HTTPS協(xié)議的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
解決IntelliJ IDEA中鼠標拖動選擇為矩形區(qū)域問題
這篇文章主要介紹了解決IntelliJ IDEA中鼠標拖動選擇為矩形區(qū)域問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10

