第一次使用jfinal开发项目,数据库是mysql,使用druid连接池。今天下午在映射model的时候,发现表中没有下划线的字段映射model后的set,get方法全是大写,如表中字段为大写PHONE,映射生成后为
public void setPHONE(java.lang.String PHONE) {
set("PHONE", PHONE);
}
public java.lang.String getPHONE() {
return get("PHONE");
}
经调试发现,MetaBuilder类的buildColumnMetas方法中,最初拿到的字段名就有时大写有时小写,而对于没有下划线的字段全部为大写,以至于后面处理属性名出了问题,虽然作者有提示mysql数据库建议使用小写字段名或者驼峰字段名,但毕竟不是一个完美的方案
从toCamelCase方法来看,在判断stringWithUnderline没有下划线时直接返回了,如果stringWithUnderline此时是大写也还是存到了TableMeta对象中,最终导致生成的set、get方法出现大写问题,由于项目紧急,没有太多时间去查看buildColumnMetas方法中为什么一开始拿到的就是大写,和后面代码怎么去优化,目前比较快的还是按作者的要求全部改成小写,或修改源码,在判断字段没有下划线时转成小写再返回,但不知道对其它地方有没有影响,这个需要仔细看看代码了
你的表字段应该是大写,可以通过继承 MetaBuilder 覆盖掉其中的 buildAttrName(...) 方法来实现你的需求