在项目中我们如果自己去写SQL时经常出现哪条语句由于粗心导致哪个字段写的有问题,然后项目就会出问题,但是在SpringBoot中有没有一个工具可以直接生成代码呢?通过查阅资料发现在SpringBoot还真有一个工具可以直接生成架构的视图、控制器、模型层,而且项目中简单的增删改查的sql语句可以不用手工去写,这么好的工具就是Mybytas Plus,下面我们来学习Mybatis Plus:代码示例:https://download.csdn.net/download/feritylamb/11441966
1、创建一个maven project :
File------->New------->maven project
在配置文件中添加SpringBoot基本的依赖
- <!-- springBoot依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
注:SpringBoot创建完依赖包以后,会报一个Project configuration is not up-to-date with......,这种错误的处理方式是,选择Markers,点击报错的地方右键会弹出
最后点击Finish错误就解决了。
2、添加mybatis plus所需要的依赖包
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.baron</groupId>
- <artifactId>mybatisplusEG</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.0.0.RELEASE</version>
- </parent>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <!-- springBoot依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <!-- mysql依赖 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <!-- freemarker -->
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- </dependency>
- <!-- fastjson -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.15</version>
- </dependency>
- <!-- mybatisplus依赖 -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>2.2.0</version>
- </dependency>
- <!-- 模板引擎 -->
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity-engine-core</artifactId>
- <version>2.0</version>
- </dependency>
- </dependencies>
- </project>
3、配置application.properties
- #mysql
- spring.datasource.url=jdbc:mysql://localhost:3306/mybatisstudy?useUnicode=true&characterEncoding=utf8
- spring.datasource.username=root
- spring.datasource.password=3edcVFR$
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
4、创建一个MpGenerator类,代码如下:
- package com.gps;
- 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.TemplateConfig;
- import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
- import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
- import com.baomidou.mybatisplus.generator.config.rules.DbType;
- import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
- import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
- public class MpGenerator {
- public static void main(String[] args) {
- // assert (false) : "代码生成属于危险操作,请确定配置后取消断言执行代码生成!";
- AutoGenerator mpg = new AutoGenerator();
- // 选择 freemarker 引擎,默认 Velocity
- mpg.setTemplateEngine(new FreemarkerTemplateEngine());
- // 全局配置
- GlobalConfig gc = new GlobalConfig();
- gc.setAuthor("Baron");
- gc.setOutputDir("D://WorkPlace//工作项目\\GPS接口-Java//gpsWebApi//hsgpsdw//src//main//java");
- gc.setFileOverride(false);// 是否覆盖同名文件,默认是false
- gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
- gc.setEnableCache(false);// XML 二级缓存
- gc.setBaseResultMap(true);// XML ResultMap
- gc.setBaseColumnList(false);// XML columList
- /* 自定义文件命名,注意 %s 会自动填充表实体属性! */
- gc.setControllerName("%sController");
- gc.setServiceName("%sService");
- gc.setServiceImplName("%sServiceImpl");
- gc.setMapperName("%sMapper");
- gc.setXmlName("%sMapper");
- mpg.setGlobalConfig(gc);
- // 数据源配置
- DataSourceConfig dsc = new DataSourceConfig();
- dsc.setDbType(DbType.MYSQL);
- dsc.setTypeConvert(new MySqlTypeConvert() {
- // 自定义数据库表字段类型转换【可选】
- @Override
- public DbColumnType processTypeConvert(String fieldType) {
- System.out.println("转换类型:" + fieldType);
- // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。
- return super.processTypeConvert(fieldType);
- }
- });
- dsc.setDriverName("com.mysql.jdbc.Driver");
- dsc.setUsername("root");
- dsc.setPassword("3edcVFR$");
- dsc.setUrl(
- "jdbc:mysql://106.14.249.170:3306/gpsbd?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true");
- mpg.setDataSource(dsc);
- // 策略配置
- StrategyConfig strategy = new StrategyConfig();
- // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
- strategy.setTablePrefix(new String[] { "lbs_" });// 此处可以修改为您的表前缀
- strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
- strategy.setInclude(new String[] { "user",}); // 需要生成的表
- // strategy.setExclude(new String[]{"test"}); // 排除生成的表
- // 自定义实体父类
- // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
- // 自定义实体,公共字段
- // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
- // 自定义 mapper 父类
- // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
- // 自定义 service 父类
- // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
- // 自定义 service 实现类父类
- // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
- // 自定义 controller 父类
- // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
- // 【实体】是否生成字段常量(默认 false)
- // public static final String ID = "test_id";
- // strategy.setEntityColumnConstant(true);
- // 【实体】是否为构建者模型(默认 false)
- // public User setName(String name) {this.name = name; return this;}
- // strategy.setEntityBuilderModel(true);
- mpg.setStrategy(strategy);
- // 包配置
- PackageConfig pc = new PackageConfig();
- pc.setParent("com.gpssoft");
- pc.setController("controller");
- pc.setService("service");
- pc.setServiceImpl("service.impl");
- pc.setMapper("dao");
- pc.setEntity("model");
- pc.setXml("xml");
- // pc.setModuleName("test");
- mpg.setPackageInfo(pc);
- // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
- // InjectionConfig cfg = new InjectionConfig() {
- // @Override
- // public void initMap() {
- // Map<String, Object> map = new HashMap<String, Object>();
- // map.put("abc", this.getConfig().getGlobalConfig().getAuthor() +
- // "-mp");
- // this.setMap(map);
- // }
- // };
- //
- // // 自定义 xxList.jsp 生成
- // List<FileOutConfig> focList = new ArrayList<>();
- // focList.add(new FileOutConfig("/template/list.jsp.vm") {
- // @Override
- // public String outputFile(TableInfo tableInfo) {
- // // 自定义输入文件名称
- // return "D://my_" + tableInfo.getEntityName() + ".jsp";
- // }
- // });
- // cfg.setFileOutConfigList(focList);
- // mpg.setCfg(cfg);
- // // 调整 xml 生成目录演示
- // focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
- // @Override
- // public String outputFile(TableInfo tableInfo) {
- // return "/develop/code/xml/" + tableInfo.getEntityName() + ".xml";
- // }
- // });
- // cfg.setFileOutConfigList(focList);
- // mpg.setCfg(cfg);
- //
- // // 关闭默认 xml 生成,调整生成 至 根目录
- TemplateConfig tc = new TemplateConfig();
- tc.setXml(null);
- mpg.setTemplate(tc);
- // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,
- // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称
- // TemplateConfig tc = new TemplateConfig();
- // tc.setController("controller");
- // tc.setEntity("model");
- // tc.setMapper("dao");
- // tc.setXml("xml");
- // tc.setService("service");
- // tc.setServiceImpl("service.impl");
- // // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
- // mpg.setTemplate(tc);
- // 执行生成
- mpg.execute();
- // 打印注入设置【可无】
- // System.err.println(mpg.getCfg().getMap().get("abc"));
- }
- }
配置好数据源配置和包配置,然后运行该类,就会创建好entity、mapper、service、service.imp和web的包,这样使用Mybatis Plus创建spring Boot的包已经完成了。
注:
1、mapper保重的文件头需要添加@Mapper
2、web文件中文件头的@controller改成@RestController
3、mybatis-plus Wrapper 条件构造器,参考文章:
https://blog.csdn.net/feritylamb/article/details/97619784
代码实例:https://download.csdn.net/download/feritylamb/11441966