您的位置:首页 > 编程语言 > Java开发

SpringBoot中Mybatis Plus的使用

2019-07-28 18:45 519 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/feritylamb/article/details/97616980

在项目中我们如果自己去写SQL时经常出现哪条语句由于粗心导致哪个字段写的有问题,然后项目就会出问题,但是在SpringBoot中有没有一个工具可以直接生成代码呢?通过查阅资料发现在SpringBoot还真有一个工具可以直接生成架构的视图、控制器、模型层,而且项目中简单的增删改查的sql语句可以不用手工去写,这么好的工具就是Mybytas Plus,下面我们来学习Mybatis Plus:代码示例:https://download.csdn.net/download/feritylamb/11441966

1、创建一个maven project :

File------->New------->maven project

在配置文件中添加SpringBoot基本的依赖

  1.         <!-- springBoot依赖 -->
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-web</artifactId>
  5.         </dependency>

注:SpringBoot创建完依赖包以后,会报一个Project configuration is not up-to-date with......,这种错误的处理方式是,选择Markers,点击报错的地方右键会弹出

最后点击Finish错误就解决了。

2、添加mybatis plus所需要的依赖包

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <groupId>com.baron</groupId>
  6.     <artifactId>mybatisplusEG</artifactId>
  7.     <version>0.0.1-SNAPSHOT</version>
  8.     <parent>
  9.         <groupId>org.springframework.boot</groupId>
  10.         <artifactId>spring-boot-starter-parent</artifactId>
  11.         <version>2.0.0.RELEASE</version>
  12.     </parent>
  13.     <properties>
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15.         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  16.         <java.version>1.8</java.version>
  17.     </properties>
  18.     <dependencies>
  19.         <!-- springBoot依赖 -->
  20.         <dependency>
  21.             <groupId>org.springframework.boot</groupId>
  22.             <artifactId>spring-boot-starter-web</artifactId>
  23.         </dependency>
  24.         <!-- mysql依赖 -->
  25.         <dependency>
  26.             <groupId>mysql</groupId>
  27.             <artifactId>mysql-connector-java</artifactId>
  28.             <scope>runtime</scope>
  29.         </dependency>
  30.         <!-- freemarker -->
  31.         <dependency>
  32.             <groupId>org.freemarker</groupId>
  33.             <artifactId>freemarker</artifactId>
  34.         </dependency>
  35.         <!-- fastjson -->
  36.         <dependency>
  37.             <groupId>com.alibaba</groupId>
  38.             <artifactId>fastjson</artifactId>
  39.             <version>1.2.15</version>
  40.         </dependency>
  41.         <!-- mybatisplus依赖 -->
  42.         <dependency>
  43.             <groupId>com.baomidou</groupId>
  44.             <artifactId>mybatis-plus-boot-starter</artifactId>
  45.             <version>2.2.0</version>
  46.         </dependency>
  47.         <!-- 模板引擎 -->
  48.         <dependency>
  49.             <groupId>org.apache.velocity</groupId>
  50.             <artifactId>velocity-engine-core</artifactId>
  51.             <version>2.0</version>
  52.         </dependency>
  53.     </dependencies>
  54. </project>

3、配置application.properties

  1. #mysql
  2. spring.datasource.url=jdbc:mysql://localhost:3306/mybatisstudy?useUnicode=true&characterEncoding=utf8
  3. spring.datasource.username=root
  4. spring.datasource.password=3edcVFR$
  5. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

4、创建一个MpGenerator类,代码如下:

  1. package com.gps;
  2. import com.baomidou.mybatisplus.generator.AutoGenerator;
  3. import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
  4. import com.baomidou.mybatisplus.generator.config.GlobalConfig;
  5. import com.baomidou.mybatisplus.generator.config.PackageConfig;
  6. import com.baomidou.mybatisplus.generator.config.StrategyConfig;
  7. import com.baomidou.mybatisplus.generator.config.TemplateConfig;
  8. import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
  9. import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
  10. import com.baomidou.mybatisplus.generator.config.rules.DbType;
  11. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  12. import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
  13. public class MpGenerator {
  14.     public static void main(String[] args) {
  15.         // assert (false) : "代码生成属于危险操作,请确定配置后取消断言执行代码生成!";
  16.         AutoGenerator mpg = new AutoGenerator();
  17.         // 选择 freemarker 引擎,默认 Velocity
  18.         mpg.setTemplateEngine(new FreemarkerTemplateEngine());
  19.         // 全局配置
  20.         GlobalConfig gc = new GlobalConfig();
  21.         gc.setAuthor("Baron");
  22.         gc.setOutputDir("D://WorkPlace//工作项目\\GPS接口-Java//gpsWebApi//hsgpsdw//src//main//java");
  23.         gc.setFileOverride(false);// 是否覆盖同名文件,默认是false
  24.         gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
  25.         gc.setEnableCache(false);// XML 二级缓存
  26.         gc.setBaseResultMap(true);// XML ResultMap
  27.         gc.setBaseColumnList(false);// XML columList
  28.         /* 自定义文件命名,注意 %s 会自动填充表实体属性! */
  29.         gc.setControllerName("%sController");
  30.         gc.setServiceName("%sService");
  31.         gc.setServiceImplName("%sServiceImpl");
  32.         gc.setMapperName("%sMapper");
  33.         gc.setXmlName("%sMapper");
  34.         mpg.setGlobalConfig(gc);
  35.         // 数据源配置
  36.         DataSourceConfig dsc = new DataSourceConfig();
  37.         dsc.setDbType(DbType.MYSQL);
  38.         dsc.setTypeConvert(new MySqlTypeConvert() {
  39.             // 自定义数据库表字段类型转换【可选】
  40.             @Override
  41.             public DbColumnType processTypeConvert(String fieldType) {
  42.                 System.out.println("转换类型:" + fieldType);
  43.                 // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。
  44.                 return super.processTypeConvert(fieldType);
  45.             }
  46.         });
  47.         dsc.setDriverName("com.mysql.jdbc.Driver");
  48.         dsc.setUsername("root");
  49.         dsc.setPassword("3edcVFR$");
  50.         dsc.setUrl(
  51.                 "jdbc:mysql://106.14.249.170:3306/gpsbd?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true");
  52.         mpg.setDataSource(dsc);
  53.         // 策略配置
  54.         StrategyConfig strategy = new StrategyConfig();
  55.         // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
  56.         strategy.setTablePrefix(new String[] { "lbs_" });// 此处可以修改为您的表前缀
  57.         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
  58.         strategy.setInclude(new String[] { "user",}); // 需要生成的表
  59.         // strategy.setExclude(new String[]{"test"}); // 排除生成的表
  60.         // 自定义实体父类
  61.         // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
  62.         // 自定义实体,公共字段
  63.         // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
  64.         // 自定义 mapper 父类
  65.         // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
  66.         // 自定义 service 父类
  67.         // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
  68.         // 自定义 service 实现类父类
  69.         // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
  70.         // 自定义 controller 父类
  71.         // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
  72.         // 【实体】是否生成字段常量(默认 false)
  73.         // public static final String ID = "test_id";
  74.         // strategy.setEntityColumnConstant(true);
  75.         // 【实体】是否为构建者模型(默认 false)
  76.         // public User setName(String name) {this.name = name; return this;}
  77.         // strategy.setEntityBuilderModel(true);
  78.         mpg.setStrategy(strategy);
  79.         // 包配置
  80.         PackageConfig pc = new PackageConfig();
  81.         pc.setParent("com.gpssoft");
  82.         pc.setController("controller");
  83.         pc.setService("service");
  84.         pc.setServiceImpl("service.impl");
  85.         pc.setMapper("dao");
  86.         pc.setEntity("model");
  87.         pc.setXml("xml");
  88.         // pc.setModuleName("test");
  89.         mpg.setPackageInfo(pc);
  90.         // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
  91.         // InjectionConfig cfg = new InjectionConfig() {
  92.         // @Override
  93.         // public void initMap() {
  94.         // Map<String, Object> map = new HashMap<String, Object>();
  95.         // map.put("abc", this.getConfig().getGlobalConfig().getAuthor() +
  96.         // "-mp");
  97.         // this.setMap(map);
  98.         // }
  99.         // };
  100.         //
  101.         // // 自定义 xxList.jsp 生成
  102.         // List<FileOutConfig> focList = new ArrayList<>();
  103.         // focList.add(new FileOutConfig("/template/list.jsp.vm") {
  104.         // @Override
  105.         // public String outputFile(TableInfo tableInfo) {
  106.         // // 自定义输入文件名称
  107.         // return "D://my_" + tableInfo.getEntityName() + ".jsp";
  108.         // }
  109.         // });
  110.         // cfg.setFileOutConfigList(focList);
  111.         // mpg.setCfg(cfg);
  112.         // // 调整 xml 生成目录演示
  113.         // focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
  114.         // @Override
  115.         // public String outputFile(TableInfo tableInfo) {
  116.         // return "/develop/code/xml/" + tableInfo.getEntityName() + ".xml";
  117.         // }
  118.         // });
  119.         // cfg.setFileOutConfigList(focList);
  120.         // mpg.setCfg(cfg);
  121.         //
  122.         // // 关闭默认 xml 生成,调整生成 至 根目录
  123.         TemplateConfig tc = new TemplateConfig();
  124.         tc.setXml(null);
  125.         mpg.setTemplate(tc);
  126.         // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,
  127.         // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称
  128. //        TemplateConfig tc = new TemplateConfig();
  129. //        tc.setController("controller");
  130. //        tc.setEntity("model");
  131. //        tc.setMapper("dao");
  132. //        tc.setXml("xml");
  133. //        tc.setService("service");
  134. //        tc.setServiceImpl("service.impl");
  135. //        // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
  136. //        mpg.setTemplate(tc);
  137.         // 执行生成
  138.         mpg.execute();
  139.         // 打印注入设置【可无】
  140.         // System.err.println(mpg.getCfg().getMap().get("abc"));
  141.     }
  142. }

配置好数据源配置和包配置,然后运行该类,就会创建好entity、mapper、service、service.imp和web的包,这样使用Mybatis Plus创建spring Boot的包已经完成了。

注:

1、mapper保重的文件头需要添加@Mapper

2、web文件中文件头的@controller改成@RestController

3、mybatis-plus Wrapper 条件构造器,参考文章:

https://www.geek-share.com/detail/2775320896.html

 

代码实例:https://download.csdn.net/download/feritylamb/11441966

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: