Mybatis之typeAlias配置的3種方式小結

Mybatis typeAlias配置

1.定義別名

<typeAliases>
     <typeAlias alias="User" type="cn.lxc.vo.User" />
</typeAliases>

2.掃描包方式

<typeAliases>
     <package name="cn.lxc.vo" />
</typeAliases>

3.註解方式

package cn.lxc.vo;
import org.apache.ibatis.type.Alias;
@Alias("User")
public class User {
    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

springboot加載mybatis的typeAlias問題

springboot打成jar之後再linux上運行會報找不到 type alias 對應的實體類的問題,這是springboot掃包的問題。

工程上默認使用的是Mybatis的DefaultVFS進行掃描,但是在springboot的環境下,Mybatis的DefaultVFS這個掃包會出現問題,所以隻能修改VFS,

為瞭清晰可見,直接貼代碼

@Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        logger.info("load SpringBootVFS");
        //DefaultVFS在獲取jar上存在問題,使用springboot隻能修改
        VFS.addImplClass(SpringBootVFS.class);
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources1 = resolver.getResources("classpath*:/mybatis/*.xml");
        Resource[] resources2 = resolver.getResources("classpath*:/mysql/mapper/*.xml");
        Resource[] resources = (Resource[]) ArrayUtils.addAll(resources1,resources2);
        sqlSessionFactoryBean.setMapperLocations(resources);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.xxx.xx.entity");
        return sqlSessionFactoryBean.getObject();
    }

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: