切面操作

SqlFly允许你在sql执行前、执行后、执行异常等时机进行切面操作,方便你进行sql分析、日志打印、功能扩展等操作


1、实现接口

创建 FlyAopMyCustom.java 继承 FlyAop 并实现所有函数

  1. //自定义SqlFly的切面实现类
  2. public class FlyAopMyCustom implements FlyAop{
  3. // 执行前
  4. @Override
  5. public void exeBefore(String sql, Object[] args) {
  6. System.out.println("====== sql执行前 ======");
  7. System.out.println("执行sql为:" + sql);
  8. }
  9. // 执行后
  10. @Override
  11. public void exeAfter(String sql, Object[] args, PreparedStatement preparedStatement) {
  12. System.out.println("====== sql执行后 ======");
  13. }
  14. // 执行异常时
  15. @Override
  16. public void exeException(String sql, Object[] args, SQLException e) throws FlySQLException {
  17. System.out.println("====== sql执行异常了 ======");
  18. throw new FlySQLException(e.getMessage(), e);
  19. }
  20. // 最终执行
  21. @Override
  22. public void exeFinally(String sql, Object[] args, PreparedStatement preparedStatement) {
  23. System.out.println("====== 无论成功或异常都会执行 ======");
  24. }
  25. }

2、注入到框架中

  1. @Test
  2. public void test7_1() {
  3. FlyAop aop = new FlyAopMyCustom();
  4. FlyObjects.setAop(aop);
  5. SqlFlyFactory.getSqlFly().getScalar("select count(*) from sys_user"); // 执行sql测试一下
  6. }

3、springboot环境中怎么做?

  • springboot 自定义切面时,可以无需手动进行 FlyObjects.setAop(aop) 这一步操作,
  • 只需要重写 FlyAop 接口,加上 @Component 注解,并且保证被 springboot 包扫描机制扫描到就可以了
  • 不清楚SpringBoot包扫描机制的同学请自行百度