mybatis-plus 返回部分字段的解决方式
mybatis-plus的代码生成器会在实体类中生成数据库所有字段,我们去用mapper接口查询时,会返回数据库所有的字段。
但有些字段不是我们想要的,比如:deleted,所以我们可以在不需要的字段上面加@JsonIgnore注解,返回给前端的时候会自动把这个字段去除。
补充知识:Mybatis-Plus只查询特定字段与创建子类方法
Mybatis-Plus查询特定字段例子:
Seal seal = sealService.selectOne(
new EntityWrapper<Seal>().setSqlSelect("sealName").eq("sealId",auditProcess.getSealId()));
其中这里的seal是一个自定义类。"sealName"是数据库表seal的一个字段,这句查询只查到id为 auditProcess.getSealId() 的seal的名称。其余字段为null
创建子类方法。
一般需要联表的情况,又不想写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; /** * 状态(0:1-删除:启动) */ @TableField("manager_status") private Integer managerStatus; /** * 权限id */ @TableField("role_id") private String roleId; /** * 部门 */ @TableField("manager_department") private String managerDepartment; /** * 创建时间 */ @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; /** * 创建时间 */ @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需要对应上面两个表。
/** * <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; /** * 状态(-1:0:1-删除:停用:启用) */ @TableField("audit_status") private Integer auditStatus; /** * 创建时间 */ @TableField("create_time") private Date createTime; /** * 更新时间 */ @TableField("update_time") private Date updateTime; /** * 印章id(无则为0) */ @TableField("seal_id") private String sealId; /** * 创建人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; /** * 最大打印次数 */ @TableField("print_size") private Integer printSize; @Override protected Serializable pkVal() { return this.auditId; } }
这时候我只需要对应id的类的名称,所以我设置了vo类作为子类
然后在接口里面写转换方法
/** * <p> * 服务实现类 * </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); //复制进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; } }
再想调用时直接调用就可以了
以上这篇mybatis-plus 返回部分字段的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
- 这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
- 这篇文章主要介绍了mybatis-plus 表名添加前缀的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-26
- 这篇文章主要介绍了mybatis-plus 返回部分字段的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-02
- 这篇文章主要介绍了MyBatis-Plus自动填充功能失效导致的原因及解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
- 这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
- 这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
- 这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
使用mybatis-plus报错Invalid bound statement (not found)错误
这篇文章主要介绍了使用mybatis-plus报错Invalid bound statement (not found)错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-02- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
SQLMAP结合Meterpreter实现注入渗透返回shell
sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25- 这篇文章主要介绍了mybatis-plus实体类主键策略有3种(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-27
- 这篇文章主要介绍了mybatis-plus getOne和逻辑删除,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-26
mybatis-plus mapper中foreach循环操作代码详解(新增或修改)
这篇文章主要介绍了mybatis-plus mapper中foreach循环操作代码详解(新增或修改),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-17C# Dynamic关键字之:调用属性、方法、字段的实现方法
本篇文章是对C#中调用属性、方法、字段的实现方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25- 这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
- 这篇文章主要介绍了nestjs返回给前端数据格式的封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
Mybatis Plus 字段为空值时执行更新方法未更新解决方案
这篇文章主要介绍了Mybatis Plus 字段为空值时执行更新方法未更新解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-03- 测试代码如下:复制代码 代码如下:<?php$fp=fopen("http://www.sina.com.cn", 'r');$stream_meta = stream_get_meta_data($fp);print_r($stream_meta);?>在我本机输出如下:Array( [wrapper_data] => Array...2013-10-04
- 这篇文章主要介绍了Mybatis-Plus根据时间段去查询数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-18