背景
最近在练习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;
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论