mybatis的typeAliases设置的三种方式

先看下我的项目目录:
在这里插入图片描述

方式一:定义别名

mybatis-config.xml

<typeAliases>
	<typeAlias type="vo.Emp" alias="aliemp"></typeAlias>
</typeAliases>

EmpMapper.xml

<select id="findAll" resultType="aliemp">
 	select * from stu
 </select>

上面alias的属性值是什么,下面的resultType的属性值就是什么。

方式二:扫描包方式

mybatis-config.xml

<typeAliases>
	<package name="vo"/>
</typeAliases>

EmpMapper.xml

<select id="findAll" resultType="emp">
 	select * from stu
 </select>

上面的package中的name属性指定vo包下面的所有实体类,那么下面的resultType属性值就写该实体类名称的小写字母。如:我的实体类名称叫Emp.java,那么resultType的属性值就是emp,视图类名称叫XueSheng.java,那么resultType的属性值就是xuesheng

方式三:注解方式

mybatis-config.xml

<typeAliases>
	<package name="vo"/>
</typeAliases>

EmpMapper.xml

<select id="findAll" resultType="myemp">
 	select * from stu
 </select>

Emp.java

package vo;
import java.io.Serializable;
import java.util.Date;

import org.apache.ibatis.type.Alias;

@Alias("myemp")
public class Emp implements Serializable{
	private String sname;
	private String sex;
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

Emp.java实体类中起了个别名@Alias("myemp"),那么在typeAliases中还需要定义包的扫描路径,不然会报错!!!

踩坑总结:

刚开始我以为只需在实体类中定义一个别名,resultType就能使用,于是就把这句给注释了:
在这里插入图片描述
报错:
Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/sdbairui/mapper/EmpMapper.xml'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'myemp'. Cause: java.lang.ClassNotFoundException: Cannot find class: myemp
在这里插入图片描述
经过一番查阅资料后,得知需在typeAliases中定义包的扫描路径,于是我这样写上了:

<typeAliases>
	<package name="vo.Emp"/>
</typeAliases>

package标签中的name属性直接定义到了vo包下面的Emp实体类,导致又出现了该错误……
于是,这样写就成功了:

<typeAliases>
	<package name="vo"/>
</typeAliases>

这次,name属性值指定到这个包,没有直接指定到这个包中的某个实体类。

发布了328 篇原创文章 · 获赞 110 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/qq_42249896/article/details/92830789