[来看看]夸奖一下再看,养成习惯。
简介
mybatis-plus的自动代码生成有很多方式,这里介绍一下我使用的两种:本地代码生成: Mybatis-Plus官方在线代码生成:第三方听说Idea也有自动生成的插件,但还没有去看。 我觉得这两个人足够了。 (但是,有一天我使用了插件,注意到了柳暗花明先生。 )
在自己的项目中,可以编写Java程序,配置各种参数,启动后自动生成
此方法的优点是直接在本地项目中生成,无需手动复制和粘贴
缺点是刚开始的配置很多(但是,会一下子逃走) )。
那么,访问下面代码的好消息是下面的代码附有注释。 另一个好消息是,生成的代码也带有注释。 特别是entity类的字段注释非常有用。 设置pom.xml
! -- mybatis-plus代码生成器-
从属关系
groupIdcom.baomidou/groupId
artifactidmybatis-plus -生成器/工件id
版本3.4.0 /版本
/从属关系
! 适用于mybatis-plus代码生成器的-- velocity模板引擎-
从属关系
groupid org.Apache.velocity/groupid
体系结构-引擎-核心/体系结构id
版本2.3 /版本
/从属关系
! ---用于-- lombok自动生成-
从属关系
groupid org .项目lombok/groupid
artifactIdlombok/artifactId标识
版本1.18.16 /版本
/dependency2.自动生成代码的Java主程序
//示例显示,运行main方法控制台,输入模块表的名称并返回,然后在相应的项目目录中自动生成
公共类生成代码{
//*
* *
* *读取控制台的内容
* /p
*/
publicstaticstringscanner (字符串) {
sanner scanner=新scanner (系统. in;
stringbuilder帮助=新stringbuilder (;
help.append ('请输入' tip ':';
系统输出打印(帮助字符串);
if(Scanner.Hasnext () ) ) )。
String ipt=scanner.next (;
if (字符串实用程序. is not空白(ipt ) )
返回ipt;
}
}
throw new MybatisPlusException ('请输入正确的' tip '!' );
}
publicstaticvoidmain (字符串[ ]数组) {
//代码生成器
autogeneratormpg=newautogenerator (;
//1 .全球配置
全球配置GC=新全球配置(;
//项目路线
stringprojectpath=system.getproperty (用户目录);
//生成代码的输出目录:通常是这样。 这里不需要具体写在哪个包里。 因为要在下面分别配置软件包名称
设置输出数据(项目路径'/src /主/Java ' );
//生成代码的author
设定自动机(Javalover );
// 生成代码后,是否自动打开生成的目录:这里我们不需要,因为就是生成到当前项目 gc.setOpen(false); // 设置全局配置 mpg.setGlobalConfig(gc); // 2. 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/guns?autoReconnect=true&useUnicode=true&hdsdhlg=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("root"); mpg.setDataSource(dsc); // 3. 包配置 PackageConfig pc = new PackageConfig(); // 设置包名:和上面的输出目录进行拼接(ourDir+parent) pc.setParent("cn.stylefeng.guns.modular.business"); // 检测命令行输入的模块名:和上面的包名进行拼接(outDir+parent+moduleName),生成代码都会放到这个模块下 pc.setModuleName(scanner("模块名")); mpg.setPackageInfo(pc); // 4. 策略配置 StrategyConfig strategy = new StrategyConfig(); // 自动生成 实体类的命名:数据库映射到实体类,下划线转驼峰 strategy.setNaming(NamingStrategy.underline_to_camel); // 这里如果不设置,会跟随上面实体类的命名设置 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 字段注解:这里我们把表字段的注解打开,比如@TableField("car_name") strategy.setEntityTableFieldAnnotationEnable(true); // 实体类的父类:如果有就配置,记得加包名 strategy.setSuperEntityClass("cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity"); // 映射类的父类:如果有就配置,记得加包名 strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper"); // 服务接口的父类:如果有就配置,记得加包名 strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService"); // 服务实现类的父类:如果有就配置,记得加包名 strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl"); // 控制器类的父类:如果有就配置,记得加包名 // strategy.setSuperControllerClass(""); // lombok:是否开启Lombok的注解,比如@Data,@EqualsAndHashCode(callSuper = true) strategy.setEntityLombokModel(true); // 控制器的@RestController注解:是否开启,不开启则默认为@Controller strategy.setRestControllerStyle(true); // 监测命令行的输入:表名 strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); // 控制器的请求映射url风格:驼峰转连字符,比如"carList"-> "car-list" strategy.setControllerMappingHyphenStyle(true); // 设置表的前缀:设置后,生成的类名和Controller的请求映射中就不会包含表前缀 // 设置后为 @RequestMapping("/gps/car"),而不是@RequestMapping("/gps/gps-car") // 类名同理 strategy.setTablePrefix("gps"); mpg.setStrategy(strategy); // 5. 配置模板引擎 // 默认采用velocity模板 // mpg.setTemplateEngine(new VelocityTemplateEngine()); mpg.execute(); } }启动程序,在命令行依次输入包名,表名,等待运行完成就可以了
生成后的目录结构如下:
可以看到,基本的框架都有了
下面我们看下生成的entity文件:Car.java
/** * <p> * 车辆管理 * </p> * * @author javalover * @since 2021-04-22 */ @Data @EqualsAndHashCode(callSuper = true) @TableName("gps_car") public class Car extends BaseEntity { private static final long serialVersionUID = 1L; /** * 车辆id */ @TableId("car_id") private Long carId; /** * 所属公司id */ @TableField("company_id") private Long companyId; /** * 车辆名称 */ @TableField("car_name") private String carName; /** * 车辆种类 */ @TableField("car_type") private Integer carType; /** * 车辆颜色 */ @TableField("car_color") private String carColor; /** * 司机 */ @TableField("car_driver") private String carDriver; /** * 车辆价格 */ @TableField("car_price") private BigDecimal carPrice; /** * 油耗 */ @TableField("fuel_consumption") private BigDecimal fuelConsumption; /** * 车牌号 */ @TableField("car_number") private String carNumber; /** * 车架号 */ @TableField("frame_number") private String frameNumber; /** * 载重 */ @TableField("load_weight") private BigDecimal loadWeight; /** * 车照片 */ @TableField("car_img") private String carImg; /** * 车辆实时定位 */ @TableField("car_location") private String carLocation; }在线代码生成就是在第三方的网站,配置各种参数,点击生成就可以了,然后下载到本地。这种方法的好处是,前期不用太多配置,使用方便缺点就是:
需要在线配置一个小型的数据库,上传SQL语句生成后,需要拉到本地项目中不够灵活,比如父类的配置等其实它的缺点就是因为它的简单导致的,这种就比较适合新的项目,想要快速上手体验的朋友,因为在线的操作很简单,这里给出链接,具体操作大家体验下就知道了在线链接: https://gen.stylefeng.cn/#/createCode总结
自动生成代码的方式有很多,而这里的只是冰山一角
角1:基于Mybatis-Plus官网的例子(灵活,功能全)
角2:基于第三方的在线生成(简单,上手快)
后记:最后说一句感谢大家的观看谢谢(求关注,别白嫖我)
如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力。