同样的sql语句在数据库中根据条件能查出结果,但是在springboot项目中,却查不出来
问题描述:
<select id="queryVehicleBySelective" parameterType="com.svw.vms.vehicle.dto.VehicleStorageReqDto" resultType="com.svw.vms.vehicle.dto.VehicleStorageResultDto"> SELECT a.hq_vehicle_id hqVehicleId, a.vin vin, a.offline_date offlineDate, a.storage_code storageCode, a.storage_status storageStatus, a.quality_status qualityStatus, (select 1 from tt_sales_lock s where a.commission_no = s.commission_no or a.vin = s.vin) salesLockFlag, a.logistics_lock_flag logisticsLockFlag, a.identity_code identityCode, a.model_code modelCode, a.interior_code interiorCode, a.color_code colorCode, a.pr_list prList, a.engine_no engineNo, a.cert_no certNo, a.purchase_storage_code purchaseStorageCode, a.factory_plate_model factoryPlateModel, a.bol_no bolNo, a.instruction_no instructionNo, a.instruction_type instructionType, a.bill_type billType, b.storage_area_name storageAreaName FROM tt_hq_vehicle a LEFT JOIN tt_trans_storage_lastest b ON a.vin = b.vin AND b.brand_id = #{brandId, jdbcType=BIGINT} WHERE a.brand_id = #{brandId, jdbcType=BIGINT} <if test="storageCode != null and storageCode !=''"> AND a.storage_code = #{storageCode, jdbcType=VARCHAR} </if> <if test="vin != null and vin !=''"> AND a.vin = #{vin, jdbcType=VARCHAR} </if> <if test="modelCode != null and modelCode != ''"> AND a.model_code = #{modelCode, jdbcType=VARCHAR} </if> <if test="interiorCode != null and interiorCode != ''"> AND a.interior_code = #{interiorCode, jdbcType=VARCHAR} </if> <if test="colorCode != null and colorCode != ''"> AND a.color_code = #{colorCode, jdbcType=VARCHAR} </if> <if test="identityCode != null and identityCode != ''"> AND a.identity_code = #{identityCode, jdbcType=VARCHAR} </if> <if test="offlineDateStart != null and offlineDateStart != ''"> AND a.offline_date >= TO_DATE(#{offlineDateStart, jdbcType=VARCHAR}, 'YYYY-MM-DD') </if> <if test="offlineDateEnd != null and offlineDateEnd != ''"> AND a.offline_date < TO_DATE(#{offlineDateEnd, jdbcType=VARCHAR}, 'YYYY-MM-DD') + 1 </if> <if test="qualityStatus != null and qualityStatus != ''"> AND a.quality_status = #{qualityStatus, jdbcType=VARCHAR} </if> <if test="billType != null and billType != ''" > AND a.bill_type = #{billType, jdbcType=CHAR} </if> <if test="vinList != null and vinList.size() > 0"> AND a.vin IN <foreach collection="vinList" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> <if test="logisticsLockFlag != null and logisticsLockFlag != ''"> <choose> <when test="logisticsLockFlag == '0'"> AND a.logistics_lock_flag = 0 </when> <otherwise> AND a.logistics_lock_flag > 0 </otherwise> </choose> </if> ORDER BY a.hq_vehicle_id DESC </select>
答
mybatis 在执行时可以在控制台打印sql,以及对于的参数,把sql复制出来参数放上去在数据库执行看看
答
1.把mapper备份
2.直接mapper的方法里,清空,直接返回select 一个你实体的字段,看这个时候返回的对象有没有值
3.如果有值,则应该是sql的问题
4.如果没值,看mapper里返回的字段和实体字段是否对应
答
resultType="com.svw.vms.vehicle.dto.VehicleStorageResultDto" 作为一个小白问一句,resultType后面可以直接返回实体类吗,
a.vin vin, 这个为什么不是a.vin as vin,
答
resultTyp 换成 resultMap
答
改了都启动不了
答
问题找到了是数据库字段类型的问题