• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

达梦数据库+mybatis返回字段转小写

武飞扬头像
蝈蝈噶蝈蝈噶
帮助1

1、开启mybatis驼峰命名规则

  1.  
    mybatis:
  2.  
    configuration:
  3.  
    #使用mybatis驼峰功能将达梦返回字段转小写
  4.  
    map-underscore-to-camel-case: true

2、继承MapWrapper

  1.  
     
  2.  
    import org.apache.ibatis.reflection.MetaObject;
  3.  
    import org.apache.ibatis.reflection.wrapper.MapWrapper;
  4.  
     
  5.  
    import java.util.Map;
  6.  
     
  7.  
    public class SqlFieldToLowerCase extends MapWrapper {
  8.  
     
  9.  
    public SqlFieldToLowerCase(MetaObject metaObject, Map<String, Object> map) {
  10.  
    super(metaObject, map);
  11.  
    }
  12.  
     
  13.  
    @Override
  14.  
    public String findProperty(String name, boolean useCamelCaseMapping) {
  15.  
    if (useCamelCaseMapping) {
  16.  
    //查询字段转小写
  17.  
    return name == null ? null : name.toLowerCase();
  18.  
    }
  19.  
    return name;
  20.  
    }
  21.  
     
  22.  
     
  23.  
    }
学新通

3、实现ObjectWrapperFactory

  1.  
     
  2.  
    import com.alibaba.fastjson.JSONObject;
  3.  
    import org.apache.ibatis.reflection.MetaObject;
  4.  
    import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
  5.  
    import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
  6.  
    import org.apache.ibatis.session.Configuration;
  7.  
    import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
  8.  
    import org.springframework.context.annotation.Bean;
  9.  
    import org.springframework.stereotype.Component;
  10.  
     
  11.  
    import java.util.Map;
  12.  
     
  13.  
    @Component
  14.  
    public class SqlFieldToLowerCaeFactory implements ObjectWrapperFactory {
  15.  
    @Override
  16.  
    public boolean hasWrapperFor(Object o) {
  17.  
    return o instanceof Map;
  18.  
    }
  19.  
     
  20.  
    @Override
  21.  
    public ObjectWrapper getWrapperFor(MetaObject metaObject, Object o) {
  22.  
    return new SqlFieldToLowerCase(metaObject, (Map) o);
  23.  
    }
  24.  
     
  25.  
    /**
  26.  
    * 使用该方式object-wrapper-factory: com.demo.config.SqlFieldToLowerCaeFactory
  27.  
    * 会报类型转换异常所以使用下面这种方式
  28.  
    * @return
  29.  
    */
  30.  
    @Bean
  31.  
    public ConfigurationCustomizer mybatisConfigurationCustomizer() {
  32.  
    return new ConfigurationCustomizer() {
  33.  
    @Override
  34.  
    public void customize(Configuration configuration) {
  35.  
     
  36.  
    configuration.setObjectWrapperFactory(new SqlFieldToLowerCaeFactory());
  37.  
    }
  38.  
    };
  39.  
    }
  40.  
     
  41.  
    }
学新通

注意事项:mybatis返回结果为fastjson:JSONObject类型时,使用该方式将返回字段转小写可能会在遇见达梦数据库字段类型为CLOB、TEXT等类型字段报JSON解析内存溢出

可以尝试在数据库链接上拼接clobAsString=1 或者将字段类型改为varchar

jdbc:dm://127.0.0.1:5236/DEMO?clobAsString=1

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcaief
系列文章
更多 icon
同类精品
更多 icon
继续加载