基于Mybatis plus 自动代码生成器的实现代码
2018-05-18 11:28
609 查看
1.使用的是maven项目,添加依赖
<!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.2.0</version> </dependency>
还有数据库的连接
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>compile</scope> </dependency>
最后是源码
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.DbType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import org.junit.jupiter.api.Test; /** * mybatis-plus 自动生成代码 * * @author Terry * @version 1.0 * @date 2018-05-16 09:35 */ public class SimpleMp { @Test public void generateCode() { //指定包名 String packageName = "com.hciot.hhhh"; //user -> UserService, 设置成true: user -> IUserService boolean serviceNameStartWithI = false; //指定生成的表名 String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"}; generateByTables(serviceNameStartWithI, packageName, tableNames); } /** * 根据表自动生成 * * @param serviceNameStartWithI 默认为false * @param packageName 包名 * @param tableNames 表名 * @author Terry */ private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) { //配置数据源 DataSourceConfig dataSourceConfig = getDataSourceConfig(); // 策略配置 StrategyConfig strategyConfig = getStrategyConfig(tableNames); //全局变量配置 GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI); //包名配置 PackageConfig packageConfig = getPackageConfig(packageName); //自动生成 atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig); } /** * 集成 * * @param dataSourceConfig 配置数据源 * @param strategyConfig 策略配置 * @param config 全局变量配置 * @param packageConfig 包名配置 * @author Terry */ private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) { new AutoGenerator() .setGlobalConfig(config) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(packageConfig) .execute(); } /** * 设置包名 * * @param packageName 父路径包名 * @return PackageConfig 包名配置 * @author Terry */ private PackageConfig getPackageConfig(String packageName) { return new PackageConfig() .setParent(packageName) .setXml("mapper") .setMapper("dao") .setController("controller") .setEntity("entity"); } /** * 全局配置 * * @param serviceNameStartWithI false * @return GlobalConfig * @author Terry */ private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) { GlobalConfig globalConfig = new GlobalConfig(); globalConfig .setBaseColumnList(true) .setBaseResultMap(true) .setActiveRecord(false) .setAuthor("Terry") //设置输出路径 .setOutputDir(getOutputDir("mybatis-plus")) .setFileOverride(true); if (!serviceNameStartWithI) { //设置service名 globalConfig.setServiceName("%sService"); } return globalConfig; } /** * 返回项目路径 * * @param projectName 项目名 * @return 项目路径 * @author Terry */ private String getOutputDir(String projectName) { String path = this.getClass().getClassLoader().getResource("").getPath(); int index = path.indexOf(projectName); return path.substring(1, index) + projectName + "/src/main/java/"; } /** * 策略配置 * * @param tableNames 表名 * @return StrategyConfig * @author Terry */ private StrategyConfig getStrategyConfig(String... tableNames) { return new StrategyConfig() // 全局大写命名 ORACLE 注意 .setCapitalMode(true) .setEntityLombokModel(false) // 表名、字段名、是否使用下划线命名(默认 false) .setDbColumnUnderline(true) //从数据库表到文件的命名策略 .setNaming(NamingStrategy.underline_to_camel) //需要生成的的表名,多个表名传数组 .setInclude(tableNames); } /** * 配置数据源 * * @return 数据源配置 DataSourceConfig * @author Terry */ private DataSourceConfig getDataSourceConfig() { String dbUrl = "jdbc:mysql://localhost:3306/test"; return new DataSourceConfig().setDbType(DbType.MYSQL) .setUrl(dbUrl) .setUsername("root") .setPassword("root") .setDriverName("com.mysql.jdbc.Driver"); } /** * 根据表自动生成 * * @param packageName 包名 * @param tableNames 表名 * @author Terry */ @SuppressWarnings("unused") private void generateByTables(String packageName, String... tableNames) { generateByTables(true, packageName, tableNames); } }
总结
以上所述是小编给大家介绍的基于Mybatis plus 自动代码生成器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- [ci] 基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成
- 基于python实现jenkins自动发布代码平台
- 基于jQuery的输入框无值自动显示指定数据的实现代码
- 基于jQuery的输入框无值自动显示指定数据的实现代码
- 基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- 基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- 基于JavaScript实现网页倒计时自动跳转代码
- 基于jQuery的图片大小自动适应实现代码
- 基于jQuery的试卷自动排版系统实现代码
- 基于jQuery的试卷自动排版系统实现代码
- 基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
- 基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
- 基于python实现jenkins自动发布代码平台 推荐
- 基于JavaScript实现网页倒计时自动跳转代码
- 基于jQuery的图片大小自动适应实现代码
- 基于JavaScript代码实现自动生成表格
- 利用KVC写的一个分类实现自动生成模型属性代码
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]