注入自定义SQL

自定义注入全表删除方法 deteleAll

自定义 MySqlInjector 注入类 java 代码如下:

  1. public class MySqlInjector extends AutoSqlInjector {
  2. @Override
  3. public void inject(Configuration configuration, MapperBuilderAssistant builderAssistant, Class<?> mapperClass,
  4. Class<?> modelClass, TableInfo table) {
  5. /* 添加一个自定义方法 */
  6. deleteAllUser(mapperClass, modelClass, table);
  7. }
  8. public void deleteAllUser(Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
  9. /* 执行 SQL ,动态 SQL 参考类 SqlMethod */
  10. String sql = "delete from " + table.getTableName();
  11. /* mapper 接口方法名一致 */
  12. String method = "deleteAll";
  13. SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
  14. this.addMappedStatement(mapperClass, method, sqlSource, SqlCommandType.DELETE, Integer.class);
  15. }
  16. }

当然你的 mapper.java 接口类需要申明使用方法 deleteAll 如下

  1. public interface UserMapper extends BaseMapper<User> {
  2. /**
  3. * 自定义注入方法
  4. */
  5. int deleteAll();
  6. }

最后一步注入启动

  1. <!-- 定义 MP 全局策略,安装集成文档部分结合 -->
  2. <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
  3. .....
  4. <!-- 自定义注入 deleteAll 方法 -->
  5. <property name="sqlInjector" ref="mySqlInjector" />
  6. </bean>
  7. <!-- 自定义注入器 -->
  8. <bean id="mySqlInjector" class="com.baomidou.test.MySqlInjector" />
  • 完成如上几步共享,注入完成!可以开始使用了。。。

扩展通过上述方式,就可以自定义各种你想要的sql(逻辑删除目前就是这个解决方案mp_2.1.5)