04-MyBatis高级

1、MyBatis多表查询

1.1、查询用户以及用户的扩展信息(一对一关联)

  • 步骤1
  • 步骤2
  • 步骤3
  • 步骤4

1.2、查询用户以及用户的多个订单信息(一对多关联)

  • 步骤1
  • 步骤2
  • 步骤3
  • 步骤4

1.3、多对多关联

  • 多对多关联相当于两个一对多关联;只不过实现起来步骤有点繁杂,原理并不难懂

2、MyBatis缓存

2.1、MyBatis缓存概念

  • 每次执行相同的语句都是去数据库中查询,存在效率问题
  • MyBatis框架提供了缓存策略,通过缓存策略可以减少查询数据库的次数,提升系统性能
  • 在MyBatis框架中缓存分为一级缓存和二级缓存
    • 一般来说缓存在内存中

2.2、MyBatis一级缓存

  • 一级缓存是sqlSession范围的缓存,只能在同一个sqlSession内部有效。它本身已经存在,一级缓存不需要手动处理,可以直接使用
  • 第一次查询数据的时候,会将查询的数据放入一级缓存中。后面相同的查询会直接从缓存中获取
    • 一级缓存是sqlSession范围的缓存,并且当调用sqlSession的修改、添加、删除、提交、关闭等方法时,一级缓存会被清空

2.3、MyBatis二级缓存

  • 概念
    • 二级缓存是mapper映射级别缓存,作用范围跨越SqlSession,可以在多个SqlSession之间共享二级缓存数据
  • 二级缓存关键点
    • 1.实体类需要实现Serializable接口
    • 2.至少要准备2个以上SqlSession,在进行测试
  • 实现
  • 结果分析

3、MyBatis注解开发

3.1、查询所有用户

  • public interface UserMapper {
        // 1.查询所有用户
        @Select(“SELECT * FROM user;")
        void selectAll();
    }
    

3.2、添加用户

  • public interface UserMapper {
        // 3.添加新的用户
        @Insert("INSERT INTO user VALUES (NULL, #{username}, #{birthday}, #{sex}, #{address});")
        void add(User user);
    }
    

3.3、根据用户id修改用户

  • public interface UserMapper {
        // 2.根据用户id修改用户
        @Update("UPDATE user SET username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} WHERE id=#{id};")
        void update(User user);
    }
    

3.4、根据用户id删除用户

  • public interface UserMapper {
        // 1.根据用户id删除用户
        @Delete("DELETE FROM user WHERE id=#{uid};")
        void deleteById(int uid);
    }
    

3.5、小结

  • 注解完成简单功能
  • 配置文件完成复杂功能!
posted @ 2022-07-31 15:22  OnlyOnYourself-Lzw  阅读(27)  评论(0编辑  收藏  举报