List<TVehcertUploadLog> list = tVehcertUploadLogService.list(new LambdaQueryWrapper<TVehcertUploadLog>().eq(StringUtils.isNotBlank(tVehcertUploadLog.getVin()),TVehcertUploadLog::getVin,tVehcertUploadLog.getVin()不用.leftjoin以及insql,用比较简单的方式联表查询,查询的字段‘dllx’来自另一张表T_DLLX,这个‘dllx’字段又是vin的第八位,通过与T_DLLX表中的code字段匹配,如何然后显示对应的动力类型名称name
时间: 2024-02-01 22:13:20 浏览: 71
可以使用子查询来实现,具体代码如下:
```
// 子查询,查询T_DLLX表中code等于vin的第八位的记录
String subSql = "(SELECT name FROM T_DLLX WHERE code = SUBSTRING(vin, 8, 1))";
// 查询TVehcertUploadLog表,并将子查询的结果作为字段dllxName返回
List<TVehcertUploadLog> list = tVehcertUploadLogService.list(new LambdaQueryWrapper<TVehcertUploadLog>()
.select(TVehcertUploadLog.class,
// 将dllx字段作为dllxName返回
TVehcertUploadLog::getDllx as "dllxName")
.eq(StringUtils.isNotBlank(tVehcertUploadLog.getVin()), TVehcertUploadLog::getVin, tVehcertUploadLog.getVin())
.apply("dllx = " + subSql));
```
上述代码中,使用了LambdaQueryWrapper实现了简单联表查询,同时使用了子查询来获取对应的动力类型名称,最终将名称作为dllxName返回。注意,由于子查询返回的是一个单独的字段,所以在查询时需要使用apply方法手动添加子查询的SQL语句。
相关问题
List<TVehcertUploadLog> list = tVehcertUploadLogService.list(new LambdaQueryWrapper<TVehcertUploadLog>().eq(StringUtils.isNotBlank(tVehcertUploadLog.getVin()),TVehcertUploadLog::getVin,tVehcertUploadLog.getVin())连表查询T_DLLX不适用.leftjoin
如果要进行连表查询T_DLLX,可以使用以下方式:
```
List<TVehcertUploadLog> list = tVehcertUploadLogService.list(new LambdaQueryWrapper<TVehcertUploadLog>()
.eq(StringUtils.isNotBlank(tVehcertUploadLog.getVin()), TVehcertUploadLog::getVin, tVehcertUploadLog.getVin())
.leftJoin(T_DLLX.class, TVehcertUploadLog::getDlbh, T_DLLX::getDlbh)
.list());
```
这里使用了 `leftJoin` 进行左连接查询,并在参数中指定了两个实体类之间的关联关系。需要根据实际情况做出修改。
public ResponseData<List<ConfigItemDO>> queryDisplayDataByCode(String dictCode) { LambdaQueryWrapper<ConfigItemDO> wrapper = Wrappers.lambdaQuery(ConfigItemDO.class); wrapper.eq(ConfigItemDO::getDictCode, dictCode); List<ConfigItemDO> configItemDOList = getBaseMapper().queryByDictCode(dictCode); String orgIdentifier = baseBean.getUserInfo().getOrgInfo().getOrgIdentifier(); List<ConfigItemDO> itemList = new ArrayList<>(); configItemDOList.forEach(configItemDO -> { List<ConfigItemDO.AuthorityOrg> orgList = configItemDO.getAuthorityOrg(); for (int i = 0; i < orgList.size(); i++) { StringUtils.equals(orgList.get(i).getOrgIdentifier(), orgIdentifier); itemList.add(configItemDO); } }); if (CollectionUtils.isEmpty(itemList)) { String[] parts = orgIdentifier.split("-"); if (parts.length == 1) { return new ResponseData<>(new ArrayList<>()); } String parentOrgIdentifier = ""; while (true) { for (int i = 0; i < parts.length - 1; i++) { parentOrgIdentifier = parentOrgIdentifier + parts[i]; } if (StringUtils.isNotBlank(parentOrgIdentifier)) { for (int i = 0; i < configItemDOList.size(); i++) { List<ConfigItemDO.AuthorityOrg> orgList = configItemDOList.get(i).getAuthorityOrg(); for (int j = 0; j < orgList.size(); i++) { StringUtils.equals(orgList.get(i).getOrgIdentifier(), parentOrgIdentifier); itemList.add(configItemDOList.get(i)); } } parts = parentOrgIdentifier.split("-"); if (CollectionUtils.isNotEmpty(itemList) || parts.length == 1) { break; } } } } return new ResponseData<>(itemList); }
这段代码看起来像是 Java 语言编写的一个查询方法,输入参数为一个字符串类型的字典编码 dictCode,返回一个 ResponseData<List<ConfigItemDO>> 类型的数据。在方法中,使用了 LambdaQueryWrapper 对象封装了一个查询条件,然后通过调用 getBaseMapper() 方法执行查询操作,将结果保存在 configItemDOList 变量中。随后,通过遍历 configItemDOList,将符合当前用户所在组织机构的数据保存在 itemList 变量中。如果 itemList 为空,则继续向上查找所属组织机构,直到找到数据为止。最终,将 itemList 封装在 ResponseData 对象中并返回。
阅读全文