MybatisPlus 极大的简化了单表查询的重复操作,但是在联表的时候,特别是在查询的结果集没有对应实体类的时候,就还要手写sql,手写分页和模糊,返回HashMap对象。这里我写一个Demo,以方便以后的开发中遇到这种情况。
<select id="getBillApplicationJzFile" resultType="hashmap" parameterType="java.util.Map">
SELECT a.APPLICATION_NAME AS applicationName,
a.APPLICATION_CODE AS applicationCode,
a.APPLICATION_ID AS applicationId,
c.FILE_NAME AS fileName,
c.FILE_PATH AS filePath,
a.CREATE_TIME AS createTime,
a.SEAL_FILE_DOWNLOAD_FLAG AS sealFileDownloadFlag
FROM SOM_BILL_APPLICATION a
JOIN som_electronic c ON a.sorg_id = c.SORG_ID
WHERE a.STATUS = '2'
AND c.CATALOG_CODE = 'ff86c839f98611eb8188005056a957d6'
<if test="map.sealFileDownloadFlag != null and map.sealFileDownloadFlag != ''">
AND a.SEAL_FILE_DOWNLOAD_FLAG=#{map.sealFileDownloadFlag}
if>
<if test="map.applicationName != null and map.applicationName != ''">
AND a.APPLICATION_NAME LIKE CONCAT('%', #{map.applicationName}, '%')
if>
ORDER BY a.CREATE_TIME ASC LIMIT #{map.pageSize}
OFFSET #{map.page}
select>
<select id="getTotalCount" resultType="int" parameterType="java.util.Map">
SELECT COUNT(*)
FROM SOM_BILL_APPLICATION a
JOIN som_electronic c ON a.sorg_id = c.SORG_ID
WHERE a.STATUS = '2'
AND c.CATALOG_CODE = 'ff86c839f98611eb8188005056a957d6'
<if test="map.sealFileDownloadFlag != null and map.sealFileDownloadFlag != ''">
AND a.SEAL_FILE_DOWNLOAD_FLAG=#{map.sealFileDownloadFlag}
if>
<if test="map.applicationName != null and map.applicationName != ''">
AND a.APPLICATION_NAME LIKE CONCAT('%', #{map.applicationName}, '%')
if>
select>
List<HashMap<String, String>> getBillApplicationJzFile(@Param("map")HashMap<String,Object> map);
Integer getTotalCount(@Param("map")HashMap<String,Object> map);
HashMap<String, Object> getBillApplicationJzFile(ParameterSet pset);
@Override
public HashMap<String, Object> getBillApplicationJzFile(ParameterSet pset) {
JSONObject params = pset.getParams();
long pageSize = Long.parseLong(params.getString("pageSize"));
long pageNum = Long.parseLong(params.getString("page"));
if (pageSize == 0) {
pageSize = Long.parseLong("10");
}
if (pageNum == 0) {
pageNum = Long.parseLong("1");
}
String sealFileDownloadFlag = params.getString("sealFileDownloadFlag") == null ? "" : params.getString("sealFileDownloadFlag");
String applicationName = params.getString("applicationName") == null ? "" : params.getString("applicationName");
HashMap<String, Object> map = new HashMap<>();
map.put("sealFileDownloadFlag", sealFileDownloadFlag);
map.put("applicationName", applicationName);
map.put("pageSize", pageSize);
map.put("page", (pageNum - 1) * pageSize);
HashMap<String, Object> resultMap = new HashMap<>();
resultMap.put("records", somBillApplicationMapper.getBillApplicationJzFile(map));
resultMap.put("total", somBillApplicationMapper.getTotalCount(map));
return resultMap;
}
@RequestMapping(value = "/getApplicationBillSealFile", method = RequestMethod.POST)
public Result getApplicationBillSealFile(@RequestBody ParameterSet pset) {
try {
HashMap<String, Object> billApplicationJzFile = somBillApplicationService.getBillApplicationJzFile(pset);
return Result.succ(billApplicationJzFile);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.fail(e.getMessage());
}
}
export function getApplicationBillSealFile(data) {
return request({
url: 'xxx/xxxxx/getApplicationBillSealFile',
method: 'post',
baseURL: baseURL.sorg,
data: JSON.stringify({ params: data })
})
}
// params: {page: 1, pageSize: 10, sealFileDownloadFlag: '',applicationName:''},
loadTableData() {
let map = this.params;
getApplicationBillSealFile(map).then((data) => {
console.log(data, "getApplicationBillSealFile");
this.tableData = data.data.records;
this.total = data.data.total;
});
}