赞
踩
今天写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 +
- "}";
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
再看我的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的字段应该与实体中的字段保持一致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。