Mybatis配置类别名

Mybatis配置类别名

初学时

在我们一开始学习Mybatis的时候,每次编写一个select都要在返回类型里打一大串包名.类名来指定我们的实体类,就像这样:

<select id="getUserList" resultType="com.sanjin.pojo.User">
    select * from user
</select>

如果每一条查询语句都要这么写,那真是十分的折磨,所以官方就给了我们几种设置别名的方法

配置别名

我们在官方文档的xml配置中,可以看到一个typeAliases(类型别名)配置,这个配置是在mybatis的配置文件里使用的,一般这个配置文件我们都命名为 mybatis-config.xml

方法一

在配置文件(mybatis-config.xml或者是其他名字)中的正确位置加入以下代码

<typeAliases>
    <typeAlias type="com.sanjin.pojo.User" alias="User"/>
</typeAliases>

里面的type就是一开始我们用来指定位置的一大串玩意,alias就是我们指定这玩意儿的别名
这样就可以把原先冗长的位置缩成一个单词了,这个别名不一定要和类名一样,但是为了好分辨还是不要太花里胡哨吧
设置别名后之前的select就可以改成

<select id="getUserList" resultType="User">
    select * from user
</select>

如果你的别名是其他的,比如说baby,那么resultType里也要用baby才能对应

方法二

还有一种方法是通过包扫描的方式,指定一个包,它会自动扫描里面的类,然后使用时直接用类名就行了

<typeAliases>
    <package name="com.sanjin.pojo"/>
</typeAliases>

像这样设置的意思就是扫描com.sanjin.pojo这个包下的所有类
使用:

<select id="getUserList" resultType="user">
    select * from user
</select>

那为什么User类要使用user呢?
这是官方文档推荐的,用这种方式的话类的开头字母要使用小写,但是使用User测试后其实也是可以的
使用了这种方法后看起来好像不能自定义其他名称了,只能类是什么名字就用什么,于是官方给出了一种基于包扫描配置下,可以通过注解来自定义别名的方法(注意:一定要使用方法二这种情况下,使用方法一时不能用注解法)

@Alias("abc")
public class User {
	private int id;
	private String username;
	private String password;
	...

这样别名就变成了abc,这时使用User或者user都不行了,如果你这样设置后发现运行错误,发现异常里说的是User找不到,而不是abc,那么就要把mapper.xml里的所有使用到User或user的地方改成abc,这样程序就能正常运行了,比如:

<update id="updateUser" parameterType="User">
    update user set username = #{username}, password = #{password} where id = #{id}
</update>
<select id="getUserListLikeUsername" parameterType="String" resultType="abc">
    select * from user where username like #{username}
</select>

我打算使用getUserListLikeUsername这个方法来测试别名是否可以使用,但是运行时异常。可以看到update里用的还是User,这时我们就要把User改成abc,以此类推,把其他也改了,就行了,感觉还是方法一比较稳,不会有这么多奇奇怪怪的事

注意事项

mybatis的配置十分注重位置
在这里插入图片描述
我们配置时一定要遵循官网里给出的这个顺序,不然就会报错标红,更多细节也可以直接去看官方文档

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1594231563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值