mybatis生成工具如何使用

时间:2026-10-17 05:11:58来源:力不从心网 作者:热点

MyBatis Generator(MBG)这东西,生使用说白了就是成工帮你把数据库表变成Java代码的“复印机”。你给它一张表,具何它给你吐出对应的生使用实体类、Mapper接口和XML文件。成工省去手写那些枯燥的具何getter/setter和CRUD方法的时间,这时间拿去摸鱼喝咖啡不香吗?生使用

用之前你得先准备三样东西:一个MySQL或Oracle数据库,一个Maven项目,成工还有一份配置文件。具何配置文件是生使用核心,它告诉MBG连哪个库、成工生成哪些表、具何输出到哪个包。生使用我见过太多人卡在这一步——配置文件写错一个标签,成工整个生成过程直接报错,具何然后就开始怀疑人生。

配置文件的写法其实有套路。你得先声明数据库连接信息,比如驱动、URL、用户名、密码。接着指定生成实体的包名和Mapper的包名。最关键的是table标签,它决定生成哪张表。比如你写<table tableName="user"></table>,MBG就会生成User实体和UserMapper。如果你想一次生成所有表,可以写tableName="%",但我不建议这么干——生成的代码太多,看着就头大,而且很多表你根本用不上。

配置文件写好后,运行方式有两种。一种是命令行直接跑,另一种是配到Maven插件里。我推荐后者,因为你可以把MBG集成到构建流程中,以后表结构变了,一条mvn mybatis-generator:generate命令就能重新生成。我第一次用的时候没配Maven插件,每次都得手动敲命令找jar包,烦得要死。后来花十分钟配好插件,感觉整个世界都清净了。

生成完代码后,你会发现MBG产生的实体类里有个example类。这玩意儿是干什么的?它是用来构建复杂查询条件的。比如你想查年龄大于20的用户,可以写UserExample example = new UserExample(); example.createCriteria().andAgeGreaterThan(20);。说实话,这个example类的设计有点反人类,方法名冗长,嵌套多,写起来像在拼乐高。但没办法,这是MBG的默认风格,你要是实在看不惯,可以配置enableCountByExample="false"之类的选项关掉它。

有个坑我必须提醒你:MBG生成的代码默认会覆盖你已有的文件。如果你在生成的UserMapper里手动加过自定义方法,下次再跑生成命令,那些方法就没了。解决办法是在配置文件里设置overwrite="false",或者把生成的代码放到单独的目录,然后通过git合并。我自己吃过亏,辛辛苦苦写了一个findByUserNameAndPassword方法,结果跑了一次生成,方法直接蒸发。从那以后,我养成了生成前先备份的习惯。

再说个实用技巧。MBG支持生成注释,默认注释是英文的,而且每个字段都会标注“This field was generated by MyBatis Generator”。看着挺啰嗦。你可以在配置里实现一个CommentGenerator接口,改成自己的中文注释,或者干脆去掉注释。让代码干净点,回头review的时候心情也好。

最后聊一下实际使用场景。我在一个电商项目里,订单表有四十多个字段,手写实体类得写半天。用MBG跑一下,十秒钟搞定。而且生成的Mapper自带insertSelective方法,只插入非空字段,特别适合处理那种字段可选的表。后来表里加了个优惠券字段,我重新跑一遍生成,代码自动更新,省了不少事。

MBG不是万能的,它处理不了复杂的多表关联查询,那种场景你还是得手写SQL。但单表操作这块,它确实能帮你省下大量重复劳动。花半小时学会它,以后每次建表都能省两小时,这买卖划算。

相关内容
推荐内容