方式一:MyBatisPlus自动生成代码(狂神安利)
MyBatisPlus官网:https://mp.baomidou.com/
如果你已经有了一定的java基础和项目经验,那么你可以使用mybatisplus的代码生成器来快速生成controller、service、mapper、entity。
步骤:
-
编写项目,初始化项目!使用SpringBoot初始化!
-
导入相关依赖
<!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--mybatisplus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!--mysql数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--代码生成器依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.1.tmp</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!--swagger--> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.13</version> </dependency>
依赖 为什么要导入这个依赖 lombok 实体类中使用了lombok的@Data等部分注解 mybatisplus依赖 本篇就是围绕mybatisplus,所以必不可少 mysql数据库驱动 连接数据库怎么可以少了它呢 代码生成器依赖 官方指定,必不可少 模板引擎 不导入模版引擎不会报如下错,不知道你们有没有。具体原因当然是没去考察啦,既然告诉我少那就给它安利上。如果有小伙伴知道可以告诉一下 swagger 因为我们配置了自动生成swagger的注解 -
创建CodeGenerator.java文件(这个文件官方也有提供,可以自己去看看哦)
package com.macro.mybatisplus; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; /** * Created on 2020-03-20 * @author macro */ public class CodeGenerator { public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 1.全局配置 GlobalConfig gc = new GlobalConfig(); //user.dir:代表用户的当前工作目录 String projectPath = System.getProperty("user.dir"); //设置生成文件的输出目录 gc.setOutputDir(projectPath + "/src/main/java"); //添加开发人员 gc.setAuthor("macro"); //是否打开输出目录 gc.setOpen(false); //开启 swagger2 模式 gc.setSwagger2(true); //开启覆盖 gc.setFileOverride(true); mpg.setGlobalConfig(gc); // 2.数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/mall_tiny?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("rootroot"); mpg.setDataSource(dsc); // 3.包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.macro"); pc.setModuleName("mybatisplus"); pc.setEntity("entity"); pc.setService("service"); pc.setMapper("mapper"); pc.setController("controller"); mpg.setPackageInfo(pc); // 4.策略配置 StrategyConfig strategy = new StrategyConfig(); //设置数据库表映射到实体的命名策略,下划线转驼峰命名 strategy.setNaming(NamingStrategy.underline_to_camel); //数据库表字段映射到实体的命名策略:下划线转驼峰命名(非必要,如果不配置则按照Naming执行) strategy.setColumnNaming(NamingStrategy.underline_to_camel); //strategy.setSuperEntityClass("com.macro.mybatisplus.entity.base.BaseEntity.java"); //开启lombok注解 strategy.setEntityLombokModel(true); //生成RestController注解 strategy.setRestControllerStyle(true); // 公共父类 // 写于父类中的公共字段 //strategy.setSuperEntityColumns("id"); //驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); //乐观锁 strategy.setVersionFieldName("version"); //strategy.setEntityTableFieldAnnotationEnable(true);//是否生成实体时,生成字段注解 //strategy.setSuperEntityClass("com.macro.mybatisplus.blog.entity.base.BaseEntity"); //strategy.setTablePrefix("tab");//配置表前缀(非必要) //strategy.setFieldPrefix("a")//设置字段前缀(非必要) // 自动填充配置 /* TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT); TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE); ArrayList<TableFill> tableFills = new ArrayList<>(); tableFills.add(gmtCreate); tableFills.add(gmtModified); strategy.setTableFillList(tableFills);*/ strategy.setInclude("pms_brand"); mpg.setStrategy(strategy); mpg.execute(); } }
-
生成的代码:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bj1hZaVC-1584854803816)(/Users/luboyang/Library/Application Support/typora-user-images/image-20200321134722410.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyBiRgPO-1584854803817)(/Users/luboyang/Library/Application Support/typora-user-images/image-20200321134917745.png)]
可以看到注入service层,调用service可以直接使用简单的CURD,简直就是不要太香
方式2:GeneratorConfig生成代码
步骤:
1.导入依赖
<!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- MyBatis 生成器 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.3</version> </dependency>
2.在src/main/resoucres目录下新建generatorConfig.xml。将配置粘贴进去
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <properties resource="generator.properties"/> <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat"> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}"> <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题--> <property name="nullCatalogMeansCurrent" value="true"/> </jdbcConnection> <!--生成Model targetProject:目标文件位置 targetPackage:目标包 --> <javaModelGenerator targetPackage="com.malls.model" targetProject="src/main/java"/> <!--生成mapper targetProject:目标文件位置 targetPackage:目标包 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.malls.mapper" targetProject="src/main/java"/> <!--生成全部表tableName设为%时生成全部的表--> <table tableName="%"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> </table> </context> </generatorConfiguration>
另外generatorConfig.xml的配置文件是从官网copy来然后进行修改的。
官网:http://mybatis.org/generator/
3.在src/main/resoucres目录下新建generator.properties(主要存放连接数据库信息)
jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.userId=root jdbc.password=rootroot
jdbc.driverClass:5版本的可以把cj去了,8版本的需要保留cj。高版本肯定兼容低版本的。所以建议用带cj的
3.在src/main/java新建Generator.java文件
/** * 用于生产mybatis的代码 * * @author macro * @date 2019/2/26 */ public class Generator { public static void main(String[] args) throws Exception { //MBG 执行过程中的警告信息 List<String> warnings = new ArrayList<String>(); //当生成的代码重复时,覆盖原代码 boolean overwrite = true; //读取我们的 MBG 配置文件 InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(is); is.close(); DefaultShellCallback callback = new DefaultShellCallback(overwrite); //创建 MBG MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); //执行生成代码 myBatisGenerator.generate(null); //输出警告信息 for (String warning : warnings) { System.out.println(warning); } } }
最近才开始写博客,有什么问题或者需要改正的请评论!非常感谢收藏