在 Spring 章节的学习中我们见识到了注解开发的便利性,Mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到 MyBatis 3 提供了新的基于注解的配置。不过由于 Java 注解的局限性,某些 SQL 语句并不能通过注解来实现。
SQL 注解分类:
利用注解开发就不需要配置 Mapper.xml 文件了。
1、UserMapper.java
public interface UserMapper {
@Select("select * from user")
List<User> getUserList();
@Select("select * from user where id=#{uid}")
User getUserById(@Param("uid") int id);
@Insert("insert into user(name,pwd) values(#{name},#{password})")
int addUser(User user);
@Update("update user set name = #{name} where id = #{id}")
int updateUser(User user);
}
复制代码
2、 在 Mybatis 的核心配置文件中注入
<mappers>
<mapper class="com.msdn.mapper.UserMapper" />
</mappers>
复制代码
3、测试类
@Test
public void getUsers(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.updateUser(new User(6,"clearLove","12345"));
sqlSession.close();
}
复制代码
@Param注解用于给方法参数起一个名字。以下是总结的使用原则:
#{}
的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】
INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);
复制代码
${}
的作用是直接进行字符串替换
INSERT INTO user (name) VALUES ('${name}');
INSERT INTO user (name) VALUES ('kuangshen');
复制代码