jfinal数据库大写字段转json

https://gitee.com/maxwade/study-note/blob/master/jfinal%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%A7%E5%86%99%E5%AD%97%E6%AE%B5%E8%BD%ACjson.docx 

@小徐同学 参考了这篇文章https://xiaoxustudent.top/p/389

不建议修改jfinal源码,可以实现一个jsonfactory,然后将代码copy过来即可

大写字段转model(这个是抄的sojpt里面的)

public class MysqlSojptMetaBuilder extends MetaBuilder {

   public MysqlSojptMetaBuilder(DataSource dataSource) {
      super(dataSource);
   }
   
   /**
    * 构造 colName 所对应的 attrName,mysql 数据库建议使用小写字段名或者驼峰字段名
    * Oralce 反射将得到大写字段名,所以不建议使用驼峰命名,建议使用下划线分隔单词命名法
    *
    * 重构此处即可以
    */
   protected String buildAttrName(String colName) {
      if (dialect instanceof OracleDialect) {
         colName = colName.toLowerCase();
      } else if (dialect instanceof MysqlDialect) {
         colName = colName.toLowerCase();
      }
      return StrKit.toCamelCase(colName);
   }
}
gernerator.setMetaBuilder(new MysqlSojptMetaBuilder(getDataSource()));


下划画转驼峰修改jfinal 源码如下:

public class JFinalJsonExt extends JFinalJson {
    public String mapToJson(Map map, int depth) {
        if (map == null) {
            return "null";
        }
        StringBuilder sb = new StringBuilder();
        boolean first = true;
        Iterator iter = map.entrySet().iterator();

        sb.append('{');
        while (iter.hasNext()) {
            if (first)
                first = false;
            else
                sb.append(',');

            Map.Entry entry = (Map.Entry) iter.next();
            toKeyValue(StrKit.toCamelCase(String.valueOf(entry.getKey())), entry.getValue(), sb, depth);
        }
        sb.append('}');
        return sb.toString();
    }

    public static JFinalJsonExt getJson() {
        return new JFinalJsonExt();
    }
}
public class MixJsonFactoryExt implements IJsonFactory {

    private static final MixJsonFactoryExt me = new MixJsonFactoryExt();

    public static MixJsonFactoryExt me() {
        return me;
    }

    private static MixJsonFactoryExt.MixedJson mixedJson =  new MixJsonFactoryExt.MixedJson();

    public Json getJson() {
        return mixedJson;
    }

    private static class MixedJson extends Json {

        private static JFinalJsonExt jFinalJson = JFinalJsonExt.getJson();
        private static FastJson fastJson = FastJson.getJson();

        public String toJson(Object object) {
            return jFinalJson.toJson(object);
        }

        public <T> T parse(String jsonString, Class<T> type) {
            return fastJson.parse(jsonString, type);
        }
    }
}

还是很简单,在也不用纠结了,当然转化还是有性能损失的,建议数据库用驼峰。

评论区

JFinal

2019-06-01 12:08

挖掘出好资源,感谢分享

热门分享

扫码入社