* [3.对象配置(放入到容器中)](about:blank#3_52)
* [4.把方法定义到BaseMapper(继承 BaseMapper 进行扩展,添加扩展的方法)](about:blank#4BaseMapper_BaseMapper__62)
* [5.继承 BaseMapperPlus](about:blank#5_BaseMapperPlus_69)
* [6.测试](about:blank#6_79)
* [注意](about:blank#font_colorred_98)
[](
)Sql 注入器
======================================================================
[](
)概念
就是让你自己写的sql语句和mp的默认sql语句(basemapper中的sql语句)一起启动,就不需要写映射文件了
根据MybatisPlus 的AutoSqlInjector可以自定义各种你想要的sql ,注入到全局中,相当于自定义Mybatisplus 自动注入的方法。
之前需要在xml中进行配置的SQL语句,现在通过扩展AutoSqlInjector 在加载mybatis环境时就注入。
[](
)步骤
=================================================================
[](
)1.定义SQL(继承AbstractMethod 子类)
public class FullAll extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass,
TableInfo tableInfo) {
String sqlMethod = "findAll";
String sql = "select * from " + tableInfo.getTableName();
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
return this.addSelectMappedStatementForTable(mapperClass, sqlMethod, sqlSource, tableInfo);
}
}
[](
)2.注册(SQL 注入)
public class SqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
List<AbstractMethod> methodList = super.getMethodList(mapperClass);
methodList.add(new FullAll());
return methodList;
}
}
[](
)3.对象配置(放入到容器中)
@Bean
public SqlInjector sqlInjector() {
return new SqlInjector();
# 本次面试答案,以及收集到的大厂必问面试题分享:
![字节跳动超高难度三面java程序员面经,大厂的面试都这么变态吗?](https://img-blog.csdnimg.cn/img_convert/8c936ac58ee51e214c00ca47a126b0a3.png)
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
urn new SqlInjector();
# 本次面试答案,以及收集到的大厂必问面试题分享:
[外链图片转存中...(img-eg03yIjr-1631176438305)]
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**