Mybatis支持使用注解进行开发。它们映射的语句可以不用 XML 来配置,而可以使用 Java 注解来配置
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。
选择何种方式来配置映射,以及是否应该要统一映射语句定义的形式,完全取决于你和你的团队。 换句话说,永远不要拘泥于一种方式,你可以很轻松地在基于注解和 XML 的语句映射方式间自由移植和切换。
例如,我们可以这样定义UserMapper接口类:
public interface UserMapper { // 查询全部用户 @Select("select * from user") List<User> getUserList(); @Select("select * from user where id = #{id}") // 根据ID查询用户 User getUserById(int id); }
现在来测试一下吧:
public class UserMapperTest { @Test public void test() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User userById = mapper.getUserById(2); System.out.println(userById); // User{id=2, name='limei', password='456789'} sqlSession.close(); } }
并且,当我们接口类方法传递的参数大于1个的时候,注解开发也有方法:
多个参数的情况下,基本类型和String类型,需要加上Param,引用类型则不需要添加Param🙌
@Select("select * from user where id = #{id} and name = #{name}") // 根据ID和NAME查询用户 User getUserByIdAndName(@Param("id") int id, @Param("name") String name);