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,TVehcertUploadLog表中不存在‘dllx’字段,在TVehcertUploadLog实体类中也是在字段‘dllx’上加了@TableField(exist = false)
时间: 2024-02-01 18:13:28 浏览: 67
org.apache.commons.lang3.StringUtils.jar
可以通过使用Mybatis Plus的自定义SQL来实现这个需求。首先,需要在TVehcertUploadLog实体类中添加一个名为name的字段,用于存储动力类型名称。然后,可以使用Mybatis Plus的自定义SQL功能来实现联表查询,并将结果映射到TVehcertUploadLog实体类中。
以下是一个可能的解决方案:
首先,在TVehcertUploadLog实体类中添加一个名为name的字段,用于存储动力类型名称:
```
public class TVehcertUploadLog {
// 其他字段...
@TableField(exist = false)
private String name;
// 其他方法...
}
```
然后,可以使用Mybatis Plus的自定义SQL功能来实现联表查询。可以编写一个SQL语句,使用LEFT JOIN关键字连接TVehcertUploadLog表和T_DLLX表,并在ON子句中指定匹配条件。使用SELECT关键字选择需要查询的字段,包括动力类型名称和其他需要的字段。最后,使用WHERE关键字过滤VIN值,并将结果映射到TVehcertUploadLog实体类中。
以下是一个可能的SQL语句:
```
SELECT t1.*, t2.name
FROM t_vehcert_upload_log t1
LEFT JOIN t_dllx t2 ON SUBSTRING(t1.vin, 8, 1) = t2.code
WHERE t1.vin = #{vin}
```
可以将这个SQL语句保存在一个XML文件中,例如TVehcertUploadLogMapper.xml。然后,在TVehcertUploadLogMapper接口中定义一个名为selectByVin的方法,使用@Select注解指定XML文件中的SQL语句,并使用@Result注解将查询结果映射到TVehcertUploadLog实体类中。
以下是一个可能的TVehcertUploadLogMapper接口:
```
public interface TVehcertUploadLogMapper extends BaseMapper<TVehcertUploadLog> {
@Select("SELECT t1.*, t2.name " +
"FROM t_vehcert_upload_log t1 " +
"LEFT JOIN t_dllx t2 ON SUBSTRING(t1.vin, 8, 1) = t2.code " +
"WHERE t1.vin = #{vin}")
@Results({
@Result(column = "name", property = "name")
// 其他需要映射的字段...
})
List<TVehcertUploadLog> selectByVin(@Param("vin") String vin);
}
```
最后,在业务逻辑中调用TVehcertUploadLogMapper接口的selectByVin方法,并将VIN值作为参数传递。查询结果将包含动力类型名称和其他需要的字段,并将自动映射到TVehcertUploadLog实体类中的对应字段。
以下是一个可能的业务逻辑:
```
List<TVehcertUploadLog> list = tVehcertUploadLogMapper.selectByVin(tVehcertUploadLog.getVin());
```
阅读全文