作为一名Java后端开发,日常工作中免不了要生成数据库表对应的持久化对象PO,操作数据库的接口DAO,以及CRUD的XML,也就是mapper。 MybatisGenerator是MyBatis官方提供的一个代码生成工具,完全可以胜任这个工作,不过最近在开发编程猫开源网站的时候试用了一下MyBatisPlus官方提供AutoGenerator,发现配置更简单,开发效率更高!于是就来给小伙伴们安利一波。 来个GIF感受一下AutoGenerator生成代码的快感吧。 一、使用MybatisGenerator 为了形成鲜明的对比,我们先来使用MybatisGenerator生成一次代码,感受一下整个过程。 第一步,在pom。xml文件中添加MySQLMyBatis的依赖(MybatisGenerator的前置条件)。!MySQL连接池dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion{mysql。version}versiondependency!MyBatis的SpringBootstarterdependencygroupIdorg。mybatis。spring。bootgroupIdmybatisspringbootstarterartifactIdversion2。2。2versiondependency复制代码 添加完成后,一定要执行一次Maven重载(见下图),确保MyBatis的依赖加载完毕后再执行第二步。 否则下一步可能不通过,但又得不到任何错误提示。不要问我为什么,踩过坑后痛苦的领悟。 添加完成后,可以通过Maven插件来生成代码,也可以通过Java代码来生成代码,这里以Maven插件的形式来演示。Java代码的形式可参照MybatisGenerator: mybatis。orggeneratorr 第二步,在pom。xml的MyBatisGenerator插件,先来看一下整体的结构图,注意是在buildplugins下节点下添加。 首先是MyBatisGenerator插件,目前最新版是1。4。0,我们采用上一个稳定版本1。3。7,稳一点。groupIdorg。mybatis。generatorgroupIdmybatisgeneratormavenpluginartifactIdversion1。3。7version复制代码 只添加插件还不够,还需要对其进行配置,我们使用configurationFile元素来指定一个配置文件mybatisgeneratorconfig。xml:configurationFilesrcmainresourcesmybatisgeneratorconfig。xmlconfigurationFile复制代码 来看一下mybatisgeneratorconfig。xml的内容。generatorConfigurationcontextidmyContexttargetRuntimeMyBatis3defaultModelTypeflat!注释commentGenerator!是否不生成注释propertynamesuppressAllCommentsvaluetruecommentGenerator!jdbc连接jdbcConnectiondriverClasscom。mysql。cj。jdbc。DriverconnectionURLjdbc:mysql:ip:3306codingmoretiny02?useUnicodetruecharacterEncodingutf8serverTimezoneAsiaShanghaiuseSSLfalseuserIdcodingmoretiny02password123456!高版本的mysqlconnectorjava需要设置nullCatalogMeansCurrenttruepropertynamenullCatalogMeansCurrentvaluetruejdbcConnection!类型转换javaTypeResolverpropertynameforceBigDecimalsvaluetruejavaTypeResolver!生成实体类地址javaModelGeneratortargetPackagecom。codingmore。mbg。potargetProjectsrcmainjava!是否针对string类型的字段在set方法中进行修剪,默认falsepropertynametrimStringsvaluetruejavaModelGenerator!生成Mapper。xml文件sqlMapGeneratortargetPackagecom。codingmore。mbg。mappertargetProjectsrcmainresourcessqlMapGenerator!生成XxxMapper。java接口javaClientGeneratortargetPackagecom。codingmore。mbg。daotargetProjectsrcmainjavatypeXMLMAPPERjavaClientGeneratortableschematableNameuserdomainObjectNameUserenableCountByExamplefalseenableDeleteByExamplefalseenableSelectByExamplefalseenableUpdateByExamplefalseselectByExampleQueryIdfalsetablecontextgeneratorConfiguration复制代码配置文件至少得包含一个contextcommentGenerator用来配置生成的注释jdbcConnection用来链接数据库javaTypeResolver配置JDBC与Java的类型转换规则javaModelGenerator配置po生成的包路径和项目路径sqlMapGenerator配置mapper。xml文件生成的目录javaClientGenerator配置mapper。java文件生成的目录一个table对应一张表,如果想同时生成多张表,需要配置多个table 更多配置信息可以参照下面这篇文章: juejin。cnpost684490 由于数据库表可能会发生变动,因此我们需要追加一个配置true,允许覆盖旧的文件。为了防止我们编写的SQL语句被覆盖掉,MyBatisGenerator只会覆盖旧的po、dao、而mapper。xml不会覆盖,而是追加。 MybatisGenerator需要链接数据库,所以还需要添加数据库驱动依赖,就像这样:configurationconfigurationdependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion{mysql。version}versiondependency复制代码 这样就会显得比较冗余,因为我们之前添加过了。好在Maven提供了includeCompileDependencies属性,可以让我们在插件中引用之前添加的依赖。includeCompileDependenciestrueincludeCompileDependencies复制代码 到此为止,mybatisgeneratormavenplugin就算是配置完成了,完整内容如下所示:buildpluginsplugingroupIdorg。mybatis。generatorgroupIdmybatisgeneratormavenpluginartifactIdversion1。3。7versionconfigurationconfigurationFilesrcmainresourcesmybatisgeneratorconfig。xmlconfigurationFileoverwritetrueoverwriteincludeCompileDependenciestrueincludeCompileDependenciesconfigurationpluginpluginsbuild复制代码 配置完成后可以双击运行Maven的插件MybatisGenerator,没有问题的话,可以看到生成后的文件。 二、使用MyBatisPlus的AutoGenerator MyBatisPlus(简写MP)是MyBatis的增强工具,官方宣称MP和MyBatis的关系就好像魂斗罗中的1P和2P,可谓好基友,天下走。 AutoGenerator是MyBatisPlus推出的代码生成器,可以快速生成Entity、Mapper、MapperXML、Service、Controller等各个模块的代码,比MybatisGenerator更强大,开发效率更高。 通过前面的体验,想必大家确实感觉到了MybatisGenerator的繁琐,接下来,我们来体验一下AutoGenerator,对比过后,大家心里就有答案了。 第一步,在pom。xml文件中添加AutoGenerator的依赖。dependencygroupIdcom。baomidougroupIdmybatisplusgeneratorartifactIdversion3。4。1versiondependency复制代码 第二步,添加模板引擎依赖,MyBatisPlus支持Velocity(默认)、Freemarker、Beetl,这里使用默认的Velocity引擎。dependencygroupIdorg。apache。velocitygroupIdvelocityenginecoreartifactIdversion2。3versiondependency复制代码 第三步,进行全局配置。全局配置GlobalConfiggcnewGlobalConfig();StringprojectPathSystem。getProperty(user。dir);gc。setOutputDir(projectPathsrcmainjava);gc。setAuthor(沉默王二);gc。setOpen(false);gc。setDateType(DateType。ONLYDATE);gc。setSwagger2(true);gc。setIdType(IdType。AUTO);复制代码 第四步,配置数据源。数据源配置DataSourceConfigdscnewDataSourceConfig();dsc。setUrl(jdbc:mysql:ip:3306codingmoretiny02?useUnicodetruecharacterEncodingutf8serverTimezoneAsiaShanghai);dsc。setDriverName(com。mysql。cj。jdbc。Driver);dsc。setUsername(codingmoretiny02);dsc。setPassword(123456);复制代码 第五步,配置包。包配置PackageConfigpcnewPackageConfig();pc。setParent(top。codingmore。mpg);复制代码 更多配置项可以到官方查看: baomidou。compages06157 示例代码示例如下所示:publicclassCodeGenerator{publicstaticvoidmain(String〔〕args){代码生成器AutoGeneratormpgnewAutoGenerator();GlobalConfiggcnewGlobalConfig();StringprojectPathSystem。getProperty(user。dir);gc。setOutputDir(projectPathsrcmainjava);gc。setAuthor(沉默王二);mpg。setGlobalConfig(gc);DataSourceConfigdscnewDataSourceConfig();dsc。setDriverName(com。mysql。cj。jdbc。Driver);mpg。setDataSource(dsc);mpg。execute();}}复制代码 再来看一下运行后的效果,可以看到数据库表对应的controller、service、entity、mapper等等全有了爽歪歪: 三、总结对比 对比Mybatis的Generator和MyBatisPlus的AutoGenerator,就可以得出这样一条结论:后者的配置更简单,开发效率也更高,功能也更强大可快速生成Mapper、Model、Service、Controller层代码。 MyBatisPlus的确配得上Plus啊,确实优秀。 作者:沉默王二 链接:https:juejin。cnpost7064387392152535047