项目报错: Could not set property 'ID' of 'class cn.xxx.entity.vo.CrossVo' with value '1'

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34178998/article/details/82111101

今天写mybatis的时候遇到一个问题轮饶了大半天,后来才发现自己犯了非常幼稚的错误,今天写了一个很简单的表,然后利用Mybatis的反向工具生成实体和BaseResultMap里面的字段,后来查询的时候,一直报错:Could not set property 'ID' of 'class cn.xxx.entity.vo.CrossVo' with value '1'

先看下生成后的实体:

@TableName("rg_cross")
@ApiModel(value = "路口表实体", description = "实体类")
public class Cross extends Model<Cross> {

    private static final long serialVersionUID = 1L;

    /**
     * 路口主键id
     */
	@TableId(value="ID", type= IdType.AUTO)
	@ApiModelProperty(value = "路口主键id")
	private Long id;

    /**
     * 路口名称
     */
	@TableField("CROSS_NAME")
	@ApiModelProperty(value = "路口名称")
	@Length(min = 0, max =200, message = "路口名称长度不能超过200")
	private String crossName;

    /**
     * 路口经度
     */
	@TableField("LONGITUDE")
	@ApiModelProperty(value = "路口经度")
	@Length(min = 0, max =60, message = "路口经度长度不能超过60")
	private String longitude;

    /**
     * 路口纬度
     */
	@TableField("LATITUDE")
	@ApiModelProperty(value = "路口纬度")
	@Length(min = 0, max =60, message = "路口纬度长度不能超过60")
	private String latitude;

    /**
     * 是否是重要路口 1:是  0:否
     */
	@TableField("IS_IMPORTANT_ROAD")
	@ApiModelProperty(value = "是否是重要路口 1:是  0:否")
	private Integer isImportantRoad;


	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getCrossName() {
		return crossName;
	}

	public void setCrossName(String crossName) {
		this.crossName = crossName;
	}

	public String getLongitude() {
		return longitude;
	}

	public void setLongitude(String longitude) {
		this.longitude = longitude;
	}

	public String getLatitude() {
		return latitude;
	}

	public void setLatitude(String latitude) {
		this.latitude = latitude;
	}

	public Integer getIsImportantRoad() {
		return isImportantRoad;
	}

	public void setIsImportantRoad(Integer isImportantRoad) {
		this.isImportantRoad = isImportantRoad;
	}

	@Override
	protected Serializable pkVal() {
		return this.id;
	}

	@Override
	public String toString() {
		return "Cross{" +
			", id=" + id +
			", crossName=" + crossName +
			", longitude=" + longitude +
			", latitude=" + latitude +
			", isImportantRoad=" + isImportantRoad +
			"}";
	}
}

再看我的BaseResultMap里面的字段

<!-- 通用查询映射结果 -->
	<resultMap id="BaseResultMap" type="cn.xxx.entity.Cross">
		<id column="ID" property="id" />
		<result column="CROSS_NAME" property="crossName" />
		<result column="LONGITUDE" property="longitude" />
		<result column="LATITUDE" property="latitude" />
		<result column="IS_IMPORTANT_ROAD" property="isImportantRoad" />
	</resultMap>

再看我的查询语句:

<select id="selectPage" resultMap="BaseResultMap">
		select rc.id,
		rc.CROSS_NAME,
		rc.LONGITUDE,
		rc.LATITUDE,
		rc.IS_IMPORTANT_ROAD
		from rg_cross rc
		<include refid="whereSql" />
		limit ${from}, ${size}
	</select>

正确的结果是这样的,

而我犯错的原因是没有BaseResultMap里面的 property跟我实体里面的小写一致,才导致这个错误。

注意点:BaseResultMap里面的 property的字段应该与实体中的字段保持一致

猜你喜欢

转载自blog.csdn.net/qq_34178998/article/details/82111101
今日推荐