为了避免在使用Mybatis的时候,反复在mapper.xml文件中指定参数类型(ParamterTyp)和返回类型(resultType)的完整包名,决定在实体类上使用@Alias注解来简化操作。
使用@Alias注解前
<select id="queryOneCompetition" parameterType="com.wly.competition_system_management_backend.model.query.CompetitionQuery"
resultType="com.wly.competition_system_management_backend.model.domain.Competition">
select id, name, level, createTime, updateTime, expireTime
from competition
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
<if test="level != null">
AND level = #{level}
</if>
<if test="expireTime != null">
AND expireTime = #{expireTime}
</if>
AND isDelete != 1
</where>
</select>
使用@Alias注解后
<select id="queryOneCompetition" parameterType="competitionQuery" resultType="competition">
select id, name, level, createTime, updateTime, expireTime
from competition
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
<if test="level != null">
AND level = #{level}
</if>
<if test="expireTime != null">
AND expireTime = #{expireTime}
</if>
AND isDelete != 1
</where>
</select>
@Data
@Alias("competitionQuery")
public class CompetitionQuery implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 竞赛名称
*/
private String name;
/**
* 竞赛等级
*/
private String level;
/**
* 过期时间
*/
private Date expireTime;
}
但是这时在进行测试和启动项目的时候控制台会报错:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
原因是没有在配置文件中为Mybatis指定@Alias注解需要扫描的包位置,需要在配置文件(使用的yml格式)配置如下:
mybatis:
type-aliases-package: com.wly.competition_system_management_backend.model