1.示例代码
public static void main(String[] args) {
try {
DataSource dataSource = getDateSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(CategoryMapperCustom.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
SqlSession sqlSession = sqlSessionFactory.openSession();
CategoryMapperCustom mapper = sqlSession.getMapper(CategoryMapperCustom.class);
mapper.getSubCatList(2);
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
private static DruidDataSource getDateSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/foodie-shop");
druidDataSource.setUsername("root");
druidDataSource.setPassword("root");
return druidDataSource;
}
```2.对象准备
3.一个方法调用过程
生成代理类
select方法调用
4.xml的解析以及缓存的调用
5.mybatis插件原理
在这里插入代码片
```@Intercepts(
@Signature(
type = StatementHandler.class,
method = "prepare",
args = {Connection.class,Integer.class}
)
)
public class StatementHandlerTest implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler= (StatementHandler) invocation.getTarget();
BoundSql boundSql = statementHandler.getBoundSql();
String sql = boundSql.getSql();
Class<BoundSql> boundSqlClass = BoundSql.class;
Field field = boundSqlClass.getDeclaredField("sql");
field.setAccessible(true);
field.set(boundSql,sql+" limit 1");
return invocation.proceed();
}
}
configuration.addInterceptor(new StatementHandlerTest());
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210627202805565.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTU1OTI0,size_16,color_FFFFFF,t_70)
## 6.对象图解
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021062720522178.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTU1OTI0,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210627205353253.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTU1OTI0,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210627205408764.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTU1OTI0,size_16,color_FFFFFF,t_70)