众所周知,Mybatis中有别名设置。比如在主配置文件中用 <typeAliases> 元素设置类的别名,这样就不用每次指定完整的包名了,十分方便。
<configuration> <typeAliases> <typeAlias type="com.hao.User" alias="User"/> </typeAliases> </configuration>
但是如果每一个实体类都这样配置还是有点麻烦,这时我们可以直接指定package的名字, Mybatis会自动扫描指定包下面的javabean,并且默认设置一个别名,默认的名字为: JavaBean 的首字母小写的非限定类名来作为它的别名(其实别名是不去分大小写的)。也可在javabean 加上注解@Alias 来自定义别名, 例如: @Alias(user),也可以在配置文件中用 <typeAliases> 的子元素 <package> 来让Mybatis自动扫描。
<typeAliases> <package name="com.domain"/> </typeAliases>
其实还有一个更好的解决方法,那就是使用namespace属性。
在Mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。当你的namespace绑定接口后,就可以不用写接口实现类,Mybatis会通过该绑定自动找到对应要执行的SQL语句,如下例子。
假设有个映射文件:
<mapper namespace="com.dao.IdCardDao"> <select id="selectCodeById" parameterType="Integer" resultType="com.po.Idcard"> select * from idcard where id=#{id} </select> </mapper>
这个时候我们可以只定义一个Dao接口就行,不用写接口的实现类,需要时候调用Dao接口的方法就行:
@Repository("idCardDao") @Mapper public interface IdCardDao { public Idcard selectCodeById(Integer i); }