mybatis框架学习(6) - typeAliases

类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。

示例如下:

修改resultType测试

<select id="selectById" resultType="com.pss.mybatis_spring.model.SysUser">
    select * from sys_user where user_id = #{userId}
</select>
改成
<select id="selectById" resultType="sysUser">
    select * from sys_user where user_id = #{userId}
</select>
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'SysUser'.  Cause: java.lang.ClassNotFoundException: Cannot find class: SysUser
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) ~[mybatis-3.4.4.jar:3.4.4]
	at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149) ~[mybatis-3.4.4.jar:3.4.4]
	at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116) ~[mybatis-3.4.4.jar:3.4.4]
	... 89 common frames omitted
Caused by: java.lang.ClassNotFoundException: Cannot find class: SysUser
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) ~[mybatis-3.4.4.jar:3.4.4]
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) ~[mybatis-3.4.4.jar:3.4.4]
	at org.apache.ibatis.io.Resources.classForName(Resources.java:261) ~[mybatis-3.4.4.jar:3.4.4]
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) ~[mybatis-3.4.4.jar:3.4.4]
	... 91 common frames omitted

报错了说明SysUser没有生效,接下来再<configuration>中加入别名标签

<typeAliases>
    <typeAlias alias="sysUser" type="com.pss.mybatis_spring.model.SysUser"/>
</typeAliases>

再次运行,运行成功

DEBUG [http-nio-8080-exec-1] - JDBC Connection [com.mysql.jdbc.JDBC4Connection@5436cb7d] will not be managed by Spring
DEBUG [http-nio-8080-exec-1] - ==>  Preparing: select * from sys_user where user_id = ? 
DEBUG [http-nio-8080-exec-1] - ==> Parameters: 10001(Long)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
DEBUG [http-nio-8080-exec-1] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d0ace18]

还有另一种写法是使用package,每一个在 com.pss.mybatis_spring.model 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。比如 com.pss.mybatis_spring.model.SysUser 的别名为 sysUser;若有注解,则别名为其注解值。

// 添加实体包名路径
<typeAliases>
    <package name="com.pss.mybatis_spring.model"/>
</typeAliases>

 再次运行,运行成功

经过我的重复测试,官方文档给出的是“首字母小写的非限定类名来作为它的别名”,而我测试SYSUSEr字母不区分大小写都是可以识别的。但是实际开发中还是按照官方文档的规则来。

<select id="selectById" resultType="SYSUSEr">
    select * from sys_user where user_id = #{userId}
</select>

 修改别名再次测试,这次识别不了sysUser2。

<select id="selectById" resultType="sysUser2">
    select * from sys_user where user_id = #{userId}
</select>

在实体加上@Alias注解别名后 ,执行成功

// 在实体添加注解@Alias
@Data
@Alias("sysUser2")
public class SysUser {
    private Long userId;
}

mybatis已给出的默认别名如下:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值