注解开发

注解开发

使用注解开发

  1. 注解在接口上实现

    @Select("select * from user")
    List<User> getUser();
    
  2. 需要在核心配置文件中绑定接口

    <mapper class="cn.pinked.dao.UserMapper"/>
    
  3. 测试

    @Test
        public void getUser() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.getUser();
            for (User user : userList) {
                System.out.println(user);
            }
            sqlSession.close();
        }
    
  • 本质:反射机制实现

  • 底层:动态代理

CRUD

可以在工具类创建时实现自动提交事务

public static SqlSession getSqlSession() {
    return sqlSessionFactory.openSession(true);
}

编写接口

public interface UserMapper {
    @Select("select * from user")
    List<User> getUser();

    @Select("select * from user where id = #{id}")
    User getUserById(@Param("id") int id);

    @Insert("insert into user(id, name, pwd) values (#{id}, #{name}, #{password})")
    int addUser(User user);

    @Update("update user set name = #{name}, pwd = #{password} where id = #{id}")
    int updateUser(User user);

    @Delete("delete from user where id = #{id}")
    int deleteUser(@Param("id") int id);
}

测试类

SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

//        List<User> userList = mapper.getUser();
//        for (User user : userList) {
//            System.out.println(user);
//        }
//
//        User user = mapper.getUserById(3);
//        System.out.println(user);
//
//        int res = mapper.addUser(new User(5, "王五", "123456"));
//
//        int res = mapper.updateUser(new User(5, "王大五", "12345"));
//
//        mapper.deleteUser(5);

        sqlSession.close();

关于@Param()注解

  • 基本类型的参数或者String类型需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话可以忽略
  • 在SQL中应用的是@Param("uid")中设定的属性名
原文地址:https://www.cnblogs.com/pinked/p/12175580.html