开发常用

114 阅读1分钟
  1. mysql符号
    大于 >
    小于 <

  2. mybatisplus json格式映射

    @TableField(typeHandler = JacksonTypeHandler.class)
    
  3. 测试类编写

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    
  4. 统一打印接口日志

    @Aspect
    @Component
    @Slf4j
    public class ControllerLogInfoAspect {
    
        @Autowired
        private HttpServletRequest request;
    
        @Pointcut("execution(public * com.tduck.cloud.api.web.controller..*.*(..))")
        public void requestAspect() {
        }
    
        @Before(value = "requestAspect()")
        public void methodBefore(JoinPoint joinPoint) {
            // 打印请求内容
            log.info("请求地址:[{}],请求方式:[{}],请求类方法:[{}],请求类方法参数:[{}]",
                    request.getRequestURL().toString(), request.getMethod(),
                    joinPoint.getSignature(), Arrays.toString(joinPoint.getArgs()));
        }
    
        /**
         * 在方法执行完结后打印返回内容
         *
         * @param o
         */
        @AfterReturning(returning = "o", pointcut = "requestAspect()")
        public void methodAfterReturn(Object o) {
            String res = JSON.toJSONString(o);
            if (res.length() > 1000) {
                res = res.substring(0, 1000);
            }
            log.info("返回数据:[{}]", res);
        }
    }
    
  5. 大写下划线与驼峰互相转换

    // 大写下划线转小写驼峰
    private static final char UNICON = '_';
    private static String underlineToCamel(String param) {
        if (StringUtils.isBlank(param)) {
            return "";
        }
        int len = param.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = Character.toLowerCase(param.charAt(i));
            if (c == UNICON) {
                if (++i < len) {
                    sb.append(Character.toUpperCase(param.charAt(i)));
                }
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
    
    // 驼峰转下划线
    private static final Pattern TPATTERN = Pattern.compile("[A-Z0-9]");
    private static String camelToUnderline(String str) {
        Matcher matcher = TPATTERN.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
    
  6. springboot 手动控制事务

    有些情况下难免需要手动控制事务 这个时候可以使用

    @Autowired
    private PlatformTransactionManager transactionManager;
    
    // 开启事务
    TransactionStatus transaction = transactionManager.getTransaction(new DefaultTransactionDefinition());
    try {
        // 你的业务逻辑
        // ...
        // 提交事务
        transactionManager.commit(transaction);
    } catch (Exception e) {
        // 回滚
        transactionManager.rollback(transaction);
    }