IQueryColumn.java 946 B

1234567891011121314151617181920212223242526
  1. package org.example.join.model;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
  4. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  5. import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
  6. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  7. import org.apache.ibatis.reflection.property.PropertyNamer;
  8. public interface IQueryColumn extends IFormat {
  9. static IQueryColumn create(Object obj) {
  10. return obj::toString;
  11. }
  12. static IQueryColumn create(Object obj, String alias) {
  13. return () -> obj.toString() + StringPool.SPACE + alias;
  14. }
  15. static <T> IQueryColumn create(Object obj, SFunction<T, ?> function) {
  16. LambdaMeta meta = LambdaUtils.extract(function);
  17. String alias = StrUtil.toUnderlineCase(PropertyNamer.methodToProperty(meta.getImplMethodName()));
  18. return () -> obj.toString() + StringPool.SPACE + alias;
  19. }
  20. }