AutoGenerator代码生成器
MP的代码生成器介绍
问题:
目前我们在开发SSM项目的时候,会先搭建一个SSM的开发环境。
我们会根据数据库的表在pojo包中创建对应的实体类,而且可以不
关心项目功能的同时,在mapper层对数据库的表的基础增删改查功
能提前实现,同理,在service层可以将基础的业务代码提前声明。
然后再根据项目功能完成对应的复杂操作。而整个过程需要程序员手动
完成搭建,效率低下。
解决:
创建一个代码生成类,调用该类的对象,并将对应的数据库表作为参数传递进入
以及一些生成代码的其他要求也传递给该对象,让该对象帮助我们生成基础的开发
代码。
实现:
MP的代码生成器
作用:
根据数据库中的表动态的生成表对应的mapper,service,pojo,controller层的基础代码,提升开发效率。
[2] MP代码生成器的使用
1. 导入代码生成器相关jar包
2. 使用代码生成器生成代码
package com.bjsxt.test; import com.baomidou.mybatisplus.annotation.IdType; 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; public class TestCode { public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); //全局配置策略 GlobalConfig gc = new GlobalConfig(); String path = System.getProperty("user.dir");//动态获取当前项目的路径 System.out.println(path); gc.setFileOverride(false);// 是否覆盖同名文件,默认是false gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false gc.setEnableCache(false);// XML 二级缓存 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(false);// XML columList gc.setOutputDir(path+"/09-mp-code/src"); gc.setIdType(IdType.AUTO);//设置主键策略 //数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("1234"); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.bjsxt") .setMapper("mapper") .setService("service") .setController("controller") .setEntity("pojo") .setXml("mapper"); //策略配置 StrategyConfig stConfig = new StrategyConfig(); stConfig.setCapitalMode(true) //全局大写命名 .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略 .setTablePrefix("t_") .setInclude("t_student"); // 生成的表,多个表继续传递即可,String类型的可变参数 //将策略配置对象集成到代码生成器中 mpg.setGlobalConfig(gc); mpg.setDataSource(dsc); mpg.setPackageInfo(pc); mpg.setStrategy(stConfig); //执行生成 mpg.execute(); } }