MyBatis Plus学习连接 https://developer.aliyun.com/article/1592161

MyBatis原理

executor

Statement

ParameterHandler

public interface ParameterHandler {
  Object getParameterObject();
  void setParameters(PreparedStatement ps) throws SQLException;
}

TypeHandler 类型处理器

拦截器

@Intercepts({
    @Signature(
        type = Executor.class,
        method = "update",
        args = {MappedStatement.class, Object.class}
    ),
    @Signature(
        type = Executor.class,
        method = "query",
        args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}
    )
})
<!--一个动态sql标签就是一个`MappedStatement`对象-->
<select id="selectUserList" resultType="com.mybatis.User"> 
  select * from t_user
</select>
 // 1.加载配置文件
 InputStream    inputStream =   Resources.getResourceAsStream("mybatis-config.xml");
 //2. 创建SqlSessionFactory对象实际创建的是DefaultSqlSessionFactory对象
SqlSessionFactory builder = new SqlSessionFactoryBuilder().build(inputStream);
 //3. 创建SqlSession对象实际创建的是DefaultSqlSession对象
  SqlSession sqlSession = builder.openSession();
 //4. 创建代理对象
  UserMapper mapper = sqlSession.getMapper(UserMapper.class);
 //5. 执行查询语句
 List<User> users = mapper.selectUserList();
 //6. 释放资源
  sqlSession.close();
  inputStream.close();

源码学习