背景
最近在练习spring boot 2.7.0整合mybatis 2.1.3时,发现在使用mybatis.type-aliases-package配置后,xml中的别名会出现爆红的现象。
错误复现
配置文件中,使用mybatis.type-aliases-package配置类的别名
在mybatis 的xml编写类名是出现红名错误,找不到相关类的错误,但是编译正常:
错误解决
@Alias是MyBatis注解之一,它可以为MyBatis映射文件中的别名做简化。在MyBatis映射文件中,如果定义了一个别名,我们可以使用@Alias注解来简写这个别名,提高代码的可读性和可维护性。
在model类的具体包增加 @Alias(“SerCompanyVO”) 注解。就是把自己的类名写在双引号中。具体如下:
上面的代码中,我们为UserEntity定义了一个别名SerCompanyVO,这样在映射文件中引用SerCompanyVO时,就可以直接使用SerCompanyVO来代替完整的类名了。
验证
增加注解后,可以看见xml中的别名可以通过点击跳转了。爆红错误,顺利解决。
源码
package com.study.model;
import org.apache.ibatis.type.Alias;
import java.util.List;
@Alias("SerCompanyVO")
public class SerCompanyVO {
private int companyId;
private String companyName;
private String companyCode;
private String companyMsg;
private String companyCrdt;
private List<SerCompanyTagVO> list;
private SerCompanyTagVO serCompanyTagVO;
public int getCompanyId() {
return companyId;
}
public void setCompanyId(int companyId) {
this.companyId = companyId;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getCompanyCode() {
return companyCode;
}
public void setCompanyCode(String companyCode) {
this.companyCode = companyCode;
}
public String getCompanyMsg() {
return companyMsg;
}
public void setCompanyMsg(String companyMsg) {
this.companyMsg = companyMsg;
}
public String getCompanyCrdt() {
return companyCrdt;
}
public void setCompanyCrdt(String companyCrdt) {
this.companyCrdt = companyCrdt;
}
public List<SerCompanyTagVO> getList() {
return list;
}
public void setList(List<SerCompanyTagVO> list) {
this.list = list;
}
public SerCompanyTagVO getSerCompanyTagVO() {
return serCompanyTagVO;
}
public void setSerCompanyTagVO(SerCompanyTagVO serCompanyTagVO) {
this.serCompanyTagVO = serCompanyTagVO;
}
}