在使用 mybatis 查询的时候, 只需要定义一个查询接口, mybatis 会为我们注入注解实现或是 xml 实现. 但当我们需要传递参数时, 通常需要 @Param
来定义一个名称, 但经常的, 我们也不难发现, 这个名称与参数名称通常是一样的:
User findUser(@Param("username") String username, @Param("password") String password);
如上,
username
和password
都重复了.
而之所以要这么使用, 是因为 xml 中 ${xxx}
所引用的名称就来自于 @Param 里定义的值:
<select id="findUser" resultType="net.xiaogd.demo.mybatis.entity.User">
select * from user where username = #{username} and password = #{password}
</select>
这就带来一个重复的问题, 可否简化这个定义, 使得无需重复录入名称, 甚至完全地去掉呢? 比如像下面这样:
User findUser(String username, String password);
答案是可以的, 下面就来说下怎么去做到这一点.