MybatisPlusConfig.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.zanxiang.sdk.config;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
  5. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.ibatis.cache.CacheKey;
  8. import org.apache.ibatis.executor.Executor;
  9. import org.apache.ibatis.executor.statement.StatementHandler;
  10. import org.apache.ibatis.mapping.BoundSql;
  11. import org.apache.ibatis.mapping.MappedStatement;
  12. import org.apache.ibatis.session.ResultHandler;
  13. import org.apache.ibatis.session.RowBounds;
  14. import org.mybatis.spring.annotation.MapperScan;
  15. import org.springframework.context.annotation.Bean;
  16. import org.springframework.context.annotation.Configuration;
  17. import org.springframework.transaction.annotation.EnableTransactionManagement;
  18. import java.sql.Connection;
  19. import java.sql.SQLException;
  20. /**
  21. * @Author wcc
  22. * @Date 2020/9/11 9:30
  23. * @Version 1.0
  24. * @Description
  25. */
  26. @Configuration
  27. @EnableTransactionManagement
  28. @MapperScan("com.zanxiang.sdk.mapper")
  29. public class MybatisPlusConfig {
  30. /**
  31. * 分页插件
  32. */
  33. @Bean
  34. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  35. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  36. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
  37. interceptor.addInnerInterceptor(new DatascopeInterceptor());
  38. return interceptor;
  39. }
  40. @Slf4j
  41. public static class DatascopeInterceptor implements InnerInterceptor {
  42. /**
  43. * {@link Executor#query(MappedStatement, Object, RowBounds, ResultHandler, CacheKey, BoundSql)} 操作前置处理
  44. * <p>
  45. * 改改sql啥的
  46. *
  47. * @param executor Executor(可能是代理对象)
  48. * @param ms MappedStatement
  49. * @param parameter parameter
  50. * @param rowBounds rowBounds
  51. * @param resultHandler resultHandler
  52. * @param boundSql boundSql
  53. */
  54. @Override
  55. public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
  56. /*System.out.println("-- beforeQuery --");
  57. try {
  58. Select select = (Select) CCJSqlParserUtil.parse(boundSql.getSql());
  59. SelectBody selectBody = select.getSelectBody();
  60. if (selectBody instanceof PlainSelect) {
  61. PlainSelect plainSelect = (PlainSelect) selectBody;
  62. List<OrderByElement> orderByElements = plainSelect.getOrderByElements();
  63. System.out.println(select.toString());
  64. } else if (selectBody instanceof SetOperationList) {
  65. SetOperationList setOperationList = (SetOperationList) selectBody;
  66. List<OrderByElement> orderByElements = setOperationList.getOrderByElements();
  67. System.out.println(select.toString());
  68. } else if (selectBody instanceof WithItem) {
  69. // todo: don't known how to resole
  70. System.out.println(selectBody);
  71. }
  72. } catch (JSQLParserException e) {
  73. log.warn("failed to parse sql, exception:\n" + e.getCause());
  74. }*/
  75. }
  76. /**
  77. * {@link StatementHandler#prepare(Connection, Integer)} 操作前置处理
  78. * <p>
  79. * 改改sql啥的
  80. *
  81. * @param sh StatementHandler(可能是代理对象)
  82. * @param connection Connection
  83. * @param transactionTimeout transactionTimeout
  84. */
  85. @Override
  86. public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
  87. //System.out.println("-- beforePrepare --");
  88. }
  89. }
  90. }