代码生成器
- 代码生成器根据表把代码生成出来(逆向工程)
- 代码生成器本身就是一个工具,最终不需要部署给别人去用,只是在开发中用它生成一些代码,故可以放在src-test-java,test中的代码不会进行打包
CodeGenerator类
-
创建代码生成器
AutoGenerator mpg = new AutoGenerator();
-
全局配置
GlobalConfig gc = new GlobalConfig(); System.getProperty("user.dir") // 得到当前文件夹的路径,有时得到的路径可能出现问题,建议把路径写成绝对路径 gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); gc.setOutputDir("E:\\work\\guli_parent\\service\\service_edu" + "/src/main/java"); // 生成代码的输出目录 gc.setFileOverride(false); // 重新生成时文件是否覆盖 gc.setIdType(IdType.ID_WORKER); // 主键策略 gc.setDateType(DateType.ONLY_DATE); // 定义生成的实体类中日期类型 gc.setSwagger2(true); // 开启Swagger2模式 mpg.setGlobalConfig(gc);
-
数据源配置
DataSourceConfig dsc = new DataSourceConfig(); // 代码生成器要单独配置数据库 mpg.setDataSource(dsc);
-
包配置
PackageConfig pc = new PackageConfig(); pc.setModuleName("eduservice"); //模块名 pc.setParent("com.atguigu"); // 包 com.atguigu.eduservice pc.setController("controller"); // 包 com.atguigu.eduservice.controller pc.setEntity("entity"); pc.setService("service"); pc.setMapper("mapper"); mpg.setPackageInfo(pc);
-
策略配置
strategy.setInclude("edu_teacher"); // 加上表的名称,如有多张表,用','隔开 StrategyConfig strategy = new StrategyConfig(); mpg.setStrategy(strategy);
-
执行
mpg.execute();
代码生成器生成的代码
-
entity/EduTeacher
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="EduTeacher对象", description="讲师") public class EduTeacher implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "讲师ID") @TableId(value = "id", type = IdType.ID_WORKER_STR) private String id; @ApiModelProperty(value = "讲师姓名") private String name; ... @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除") private Boolean isDeleted; @ApiModelProperty(value = "创建时间") private Date gmtCreate; @ApiModelProperty(value = "更新时间") private Date gmtModified; }
-
mapper/EduTeacherMapper
接口
public interface EduTeacherMapper extends BaseMapper<EduTeacher> { }
xml(mapper/xml/EduTeacherMapper.xml),可以在mapper中定义一个接口,然后xml中写SQL
<mapper namespace="com.atguigu.eduservice.mapper.EduTeacherMapper"> </mapper>
-
service/EduTeacherService
接口
public interface EduTeacherService extends IService<EduTeacher> { }
实现类(service/impl/EduTeacherServiceImpl)
@Service public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService { }
-
controller/EduTeacherController
@RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController { }