Talking is Cheap,Show Me the Code
回顾
通过实体类和实体类映射文件,已经实现了简单的查询,这种方式是用 SqlSession 实例来直接执行在User.xml文件中映射的 SQL 语句:
session.selectOne("com.yiibai.mybatis.models.UserMapper.getUserByID", 1);
后来这个基础上,创建接口,通过调用接口类来获取增删改查映射的SQL语句。
注解
但是相比之前采用的方式,还有更简单的方法,使用合理描述参数和SQL语句返回值的接口,通过注解来完成SQL语句的映射,不再需要实体类映射文件。代码更简单、更安全,不容易发生的字符串文字和转换的错误。
下面,使用注解对之前的增删该查进行改写
- 接口类的改写
对于不同的方法(增删改查),注意注解标签需要相对应
public interface IUser {
@Insert("INSERT INTO USERS(name, dept, website, phone) VALUES (#{name}, #{dept}, #{website}, #{phone})")
public void insertUser(User user);
@Delete("DELETE FROM USERS WHERE id = #{id}")
public void deleteUser(int userId);
@Update("UPDATE USERS SET name = #{name} dept = #{dept}, website = #{website}, phone = #{phone} WHERE id = #{id}")
public void updateUser(User user);
@Select("SELECT * FROM USERS")
public List<User> getUserList();
@Select("SELECT * FROM USERS WHERE id = #{userId}")
public User getUser(int id);
}
- 获取session的方式改写
reader = Resources.getResourceAsReader("config/Configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
- 工程配置文件的改写
因为采用了注解的方式,所以配置文件中的实体类映射文件的声明需要被注释掉
<!--<!–实体类映射文件声明–>-->
<!--<mappers>-->
<!--<mapper resource="com/bean/User.xml" />-->
<!--</mappers>-->
- 其他文件都不做更改,再次运行,运行结果与使用实体类映射文件相同的结果。
网友评论