java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Springboot Mybatis type-aliases-package错误

Springboot Mybatis type-aliases-package错误的解决方案

作者:y打伞的鱼y

在使用Spring Boot 2.7.0整合MyBatis 2.1.3时,遇到mybatis.type-aliases-package配置后XML别名爆红的问题,通过在model类上添加@Alias注解,为类定义别名,解决了问题

背景

最近在练习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;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文