在本开源项目中数据库操作采用了Mybatis,不美的是查询数据一律返回VO结构,即使只需要其中的一两个字段也如此,更别提多表联合查询时空字段占了90%,需要改进。

本文描述Mybatis如何在单表查询和多表联合查询中仅返回部分字段。
主要思路,把查询返回值从VO修改为java.util.HashMap。

作者对Mybatis一知半解,并不知其所以然,理论知识请看这里 Mybatis3简介。

1. 单表查询

以fbPlanManage对象为例,
新增一个部分字段返回的查询方法 queryList1:

1) ApiFBPlanManageMapper.xml

新建fbPlanManageListMap,type 为 “java.util.HashMap” :

<resultMap type="java.util.HashMap" id="fbPlanManageListMap"><result property="id" column="id"/><result property="dayNumber" column="day_number"/><result property="startDate" column="start_date"/><result property="endDate" column="end_date"/><result property="pushTime" column="push_time"/>
</resultMap>

对应Sql:

<select id="queryList1" resultMap="fbPlanManageListMap">selectp.id,p.day_number,p.start_date,p.end_date,p.push_time,    from nideshop_fitbee_plan_manage p   <where><if test="user_id != null">p.usr_id = #{user_id}</if></where>
2) ApiFBPlanManageMapper.java

新增查询方法queryList1:

List<Map<String, Object>> queryList1(Map<String, Object> map);
3)ApiFBPlanManageService.java

修改查询接口,调用查询接口使用新方法queryList1,返回结果从FBPlanManageVo修改为Map<String, Object>:

/*public List<FBPlanManageVo> queryList(Map<String, Object> map) {return fbPlanManageDao.queryList(map);
}*/
public List<Map<String, Object>> queryList(Map<String, Object> map) {return fbPlanManageDao.queryList1(map);
}
4)ApiFBPlanManageController.java

修改queryList接口调用处:

/*** 获取用户的运动计划*/
/*@ApiOperation(value = "获取用户的运动计划接口", response = Map.class)
@PostMapping("list")
public Object list(@LoginUser UserVo loginUser) {Map<String, Object> param = new HashMap<String, Object>();param.put("user_id", loginUser.getUserId());List<FBPlanManageVo> entities = fbPlanManageService.queryList(param);return toResponsSuccess(entities);
}*//*** 获取用户的运动计划*/
@ApiOperation(value = "获取用户的运动计划接口", response = Map.class)
@PostMapping("list")
public Object list(@LoginUser UserVo loginUser) {Map<String, Object> param = new HashMap<String, Object>();param.put("user_id", loginUser.getUserId());List<Map<String, Object>> entities = fbPlanManageService.queryList(param);return toResponsSuccess(entities);
}

至此单表查询返回部分字段的修改完成。

2. 联合查询

在单表查询的基础上修改,联合查询 nideshop_fitbee_plan_manage 和 nideshop_goods两张表,在返回结果中增加 planName字段。

1)FBPlanManageVo

新增需要返回的新字段 planName

/**运动计划名称**/
private String planName;/*** 设置:计划名称*/
public void setPlanName(String planName) {this.planName = planName;
}/*** 获取:计划名称*/
public String getPlanName() {return planName;
}
2)ApiFBPlanManageMapper.xml

修改resultMap,新增待查询的字段:

<resultMap type="java.util.HashMap" id="fbPlanManageListMap"><result property="id" column="id"/><result property="dayNumber" column="day_number"/><result property="startDate" column="start_date"/><result property="endDate" column="end_date"/><result property="pushTime" column="push_time"/><!--联合查询运动计划名称--><association property="planName" javaType="String" ><result property="name" column="name" /></association>
</resultMap>

修改sql:

<select id="queryList1" resultMap="fbPlanManageListMap">selectp.id,p.day_number,p.start_date,p.end_date,p.push_time,g.namefrom nideshop_fitbee_plan_manage pINNER JOIN nideshop_goods gON p.plan_id = g.id<where><if test="user_id != null">p.usr_id = #{user_id}</if></where>

修改完毕,查询返回结果中将新增planName字段。

参考文章

Mybatis查询部分字段

That’s all. Thank you!

【开源项目笔记:platform-wechat-mall】Mybatis 查询数据库返回部分字段相关推荐

  1. mybatis查询数据库返回数据全为null

    异常过程 springboot框架加mybatis的整合在查询数据时返回数据正确条数但内容全为null mapper.xml <?xml version="1.0" enco ...

  2. 查看数值类型python_python 查询数据库返回的数据类型

    self.conn=MySQLdb.connect(host='localhost',port=3306, user='keystone', passwd='OptValley@4312', db=s ...

  3. mybatis查询数据返回实体对象和返回集合的易错点

    在java中,使用mybatis查询数据库中的数据,在返回实体类entity或者List时,当查询的数据在数据库中不存在时,在我们的service层怎么写才是正确的呢? 1.返回类型为实体Entity ...

  4. mybatis oracle 大写,解决mybatis用Map返回的字段全变大写的问题

    mybatis通常情况都是用javabean作为resultType的对象,但是有时也可以使用Map去接收. ${value} 如果使用Map,返回来的字段名全是大写,处理方法 Select name ...

  5. 查询数据库返回cursor,如何判断没有符合条件的记录。判断条件不是cursor==null 哦

    如题,接着说,如果查询数据库返回cursor,要判断记录是否为空,然后根据结果进行不同的操作.应该如何写判断条件呢? 很简单,用这个函数:cursor.getCount()  .  如果记录为空,该函 ...

  6. django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  7. mysql 联查字段名重复_查询数据库多个字段名时的结果有重复的解决办法_MySQL

    bitsCN.com 查询数据库多个字段名时的结果有重复的解决办法 查询数据库的结果有重复,怎么办? 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关 ...

  8. 查询数据库表中字段的名称、类型、字段长度

    怎样查询数据库表中字段的名称.类型.字段长度 SQL server版: 今天用的是SQL server,查询当前数据库下,一张表的表名.字段名.字段类型.字段长度. SELECT a.name,b.n ...

  9. oracle+mybatis查询遇到CHAR类型字段

    工作中遇到的: 某一张表A的某个字段B的类型为CHAR(4),往表A中插入一条数据,B字段的值为1,表面上(肉眼)看到B的值为1,但实际上为1加3个空格,会出现如下问题:mybatis的sql中用B字 ...

最新文章

  1. 【MIT Sam Hopkins教授】如何读论文?How to Read a Paper
  2. vue-cli3.0控制台体验
  3. python比较好的视频教程-哪里有免费的python3教程啊?最好是有例子的视频教学...
  4. 【Python】青少年蓝桥杯_每日一题_5.03_判断是否是三角形
  5. 列级触发器 SQL Server
  6. “我不看春晚,但想要张小斐同款”
  7. java一个类可以同时被访问吗,Java中两个线程是否可以同时访问同一个对象的两个不同的synchronized方法?...
  8. java axis2 jar_Java axis2.jar包详解及缺少jar包错误分析
  9. 二叉树性质 四种遍历方式
  10. b85主板装服务器系统,[U盘装系统]技嘉B85主板U盘装系统图文教程
  11. C++ 并发指南-atomic原子变量使用struct(二)
  12. 拒绝噱头,只来干货——10个具体物联网真实应用案例
  13. Java实现微信授权 获取用户OpenID(一)
  14. 小米10pro第二个摄像头下面_小米10 Pro拍照翻车?暂不支持超广角超级夜景,官方回应...
  15. Windows Embedded Compact 7 数据库开发(上)
  16. IEEE论文小技巧-pdf转eps使色彩保持RGB不变及去边框
  17. 当别人加快脚步的时候,你更应该慢下来
  18. 大数据学习之环境构建
  19. 【笔记】Polygon mesh processing 读书笔记(3)
  20. 2022年系统集成项目管理工程师考试知识点:项目成本管理

热门文章

  1. 滚动条插件---jquery.nicescroll.js
  2. pkg-config的一些用法
  3. dig命令使用大全(linux上域名查询)
  4. libreoffice API 开发(四):插入表格
  5. 局域网会议直播方案适用于局域网内部的直播
  6. 数据分析师听起来很高大上?了解这几点你再决定是否转型
  7. 物联网时代的嵌入式开发平台
  8. 国二、美H、省一、美O:起落落起,我的数模之路
  9. Halcon 解码算子详解 一
  10. Log4j配置文件解读