众所周知,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);
}