0%

使用Springboot集成了 mybatis-plus,在开发时,往往希望在控制台里面能看到 sql 语句,甚至查询结果,以便于高效开发。

在 Springboot 的yml文件里面加入如下内容:

1
2
3
4
mybatis-plus:
configuration:
# 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台)
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

编译项目时,遇到这样一个错误提示。

1
2
Warning:(12, 1) Generating equals/hashCode implementation but without a call to superclass, even though
this class does not extend java.lang.Object. If this is intentional, add '(callSuper=false)' to your type.

这是由于我们使用lombok的@Data注解时造成的。使用@Data注解时,子类的equals和hashCode方法,默认是不比较父类的属性的。

1
2
3
4
5
6
7
public int hashCode() {
int PRIME = true;
int result = super.hashCode(); // 默认这句话是没有的
Object $ext = this.getExt();
result = result * 59 + ($ext == null ? 43 : $ext.hashCode());
return result;
}

解决方案有两个。

在类上再添加一个注解:@EqualsAndHashCode(callSuper = true)

这样有个问题就是,只要继承了其他类,都要加这个注解。

还有一个通用的解决方法,在src/main/java文件夹下面,注意,不是src/main/resources下面,添加配置文件lombok.config

文件里面的内容为:

1
lombok.equalsAndHashCode.callSuper=call