Sql语句,数据库和model字段映射,下划线到驼峰

数据库设计,经常要求表的字段是 下划线的,比如

店铺表 shop 有个 user_id字段,java 的model习惯用 userId。

有字段映射的插件或设置吗。


有个不错的项目,想用它的数据库设计,然后用JFinal重新实现。

Mybatis里 有 ResultMap的概念,通过代码自动生成工具 结合ResultMap,自动映射了。


难道只能让数据库字段 也设计成 userId这种?  

评论区

fansunion

2018-09-01 15:11

用 MyMetaBuilder 继承一下 MetaBuilder , 然后覆盖掉其中的 buildAttrName() 方法,可以自由去控制生成的属性名

最后 generator.setMetaBuilder(new MyMetaBuilder()) 即可用上自己的实现?这样搞吗

fansunion

2018-09-01 15:22

JFinal3.4版本,已经支持 mysql user_id这种格式了吗

JFinal

2018-09-01 15:51

@fansunion 用生成器生成 base model,生成后的 getter setter 方法都是驼峰形式的了

生成以后,绝大部分情况下你面对的都是驼峰形变量,例如模板中这样用:
#(shop.userId)

只有当你写 sql 查询的时候才要用与数据库字段一样的形式,例如:
dao.find("select user_id from shop where user_id = ?", userId);

JFinal

2018-09-01 15:53

@fansunion 这个需求还用不着扩展 MetaBuilder, 即便是 mybatis , 我相信你在写 sql 时仍然还是要使用下划线形式的,否则 mybatis 还要将你的 sql 中的字段名强行再转换一次,这个成本就太高了

fansunion

2018-09-01 17:19

@JFinal 了解了。我的需求,jfinal自动支持了。

ddjfinal

2018-09-06 16:33

generator生成的modal已经是驼峰形式的了,enjoy引擎获取属性大写小写驼峰都是可以的啊,我都是用小写字母和下划线,和数据库字段保持一致。

fansunion

2018-09-07 16:46

JFinal

2018-09-07 16:49

@fansunion @ddjfinal 没错,enjoy 获取属性很智能,优先看你的 model 是否有 getter 方法,有的话则调用,没有的话调用 Model.get(String) 方法

前者正好支持了驼峰,后者正好支持与数据字段一致

热门反馈

扫码入社