[Mybatis]注解增删改查

129 阅读2分钟

Mybatis详细的执行流程

对工具类增删改操作完善(commit)

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    // 静态代码块
    static {
        // 使用mybatis第一步 获取sqlSessionFactory
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
    /**
     * sqlSession完全包含了面向数据库执行sql,命令所需的所有方法.
     */
    public static SqlSession getSqlSession(){
        // 加上true后增删改不再需要手动commit提交
        return sqlSessionFactory.openSession(true);
    }
}

编写接口,添加增删改查注解

/**
 * 方法存在多个参数,所有的参数前面必须加上 @Param("")注解 以注解里面的参数优先
 * @param id
 * @param name
 * @return
 */
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id,@Param("username") String username);

/**
 * 添加用户
 * @param user
 * @return
 */
@Insert("insert into user(id,name,pwd) values (#{id},#{username},#{password})")
int addUser(User user);

/**
 * 修改用户
 * @param user
 * @return
 */
@Update("update user set name=#{username},pwd=#{password} where id=#{id}")
int updateUser(User user);

/**
 * 删除用户
 * @param id
 * @return
 */
@Delete("delete from user where id=#{id}")
int deleteUser(@Param("id") int id);


测试

注意点

必须要将接口注册到核心配置文件中

@Test
public void addUserTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int count = mapper.addUser(new User(5, "aa", "121"));
    if (count > 0){
        System.out.println("添加成功");
    }

    sqlSession.close();
}

@Test
public void updateUserTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int updateUser = mapper.updateUser(new User(1, "ff", "111"));
    if (updateUser > 1){
        System.out.println("修改成功");
    }

    sqlSession.close();
}

@Test
public void removeUserTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int i = mapper.deleteUser(1);
    if (i > 0){
        System.out.println("删除成功");
    }

    sqlSession.close();
}

关于@Param()注解

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议添加
  • 在sql中引用的就是@Param()中的属性名