1. 创建 Mapper
- @Mapper
- public interface UserMapper {
- @Select("SELECT * FROM user WHERE name = #{name} limit 1")
- User selectOne(@Param("name") String name);
- @Select("SELECT * FROM user WHERE age = #{age}")
- List<User> selectList(@Param("age") Integer age);
- @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
- int insert(@Param("name") String name, @Param("age") Integer age);
- }
测试数据
- userMapper.insert("贝贝", 23);
- userMapper.insert("琪琪", 23);
- userMapper.insert("二狗", 23);
示例 1:
- userMapper.selectOne("贝贝");
- userMapper.selectOne("贝贝");
- userMapper.selectList(23);
总共发出了 3 条请求, 并且每个请求都会创建一个新的 sqlSession
示例 2:
- try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
- UserMapper userMapper2 = sqlSession.getMapper(UserMapper.class);
- userMapper2.selectOne("贝贝");
- userMapper2.selectOne("贝贝");
- userMapper2.selectList(23);
- sqlSession.commit();
- }
公用一个 sqlSession, 只发了 2 条请求, 其中第 2 个语句没有发请求 (利用了 mybatis 一级缓存)
示例 3:
- @Transactional
- public void query() {
- userMapper.selectOne("贝贝");
- userMapper.selectOne("贝贝");
- userMapper.selectList(23);
- }
类似于示例 2, 只创建一个 sqlSession, 并且第 2 个语句依然直接使用了缓存
233
来源: http://www.bubuko.com/infodetail-3350072.html