美文网首页
mybatisPlus 的集成使用

mybatisPlus 的集成使用

作者: essential_note | 来源:发表于2019-10-15 09:53 被阅读0次

@toc

1. POM中增加依赖

mybatis-plus-boot-starter包含mybatis-plus-boot-starter,需要直接覆盖。

  <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.2.0</version> 
 </dependency>   

<!--自动生成-->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-generator</artifactId>
     <version>3.2.0</version> 
 </dependency>  

<!--生成模板-->
  <dependency>
     <groupId>org.freemarker</groupId>
     <artifactId>freemarker</artifactId> 
 </dependency>

2. 生成DO、mapper、server、controller

public class MysqlGenerator {
    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();
  //全局配置
  GlobalConfig gc = new GlobalConfig();
  String projectPath = System.getProperty("user.dir");   
  //项目路径
   gc.setOutputDir(projectPath + "/src/main/java"); 
  gc.setAuthor("作者");
  gc.setOpen(true);
  //实体类名称
  gc.setEntityName("%sDO");
  //server名称
  gc.setServiceName("%sService");
  gc.setServiceImplName("%sServiceImpl"); 
   gc.setMapperName("%sMapper");
  gc.setFileOverride(true);
  gc.setActiveRecord(true);   
   gc.setEnableCache(false);
  gc.setBaseResultMap(true);
  gc.setBaseColumnList(true);
  mpg.setGlobalConfig(gc);    
  // TODO 数据源配置
  DataSourceConfig dsc = new DataSourceConfig();
  dsc.setUrl("jdbc:mysql://127.0.0.1:3306/huihua_saas_demo?characterEncoding=utf8");
  dsc.setDriverName("com.mysql.jdbc.Driver");
  dsc.setUsername("root");
  dsc.setPassword("root");
  mpg.setDataSource(dsc);    
  //  包配置
  PackageConfig pc = new PackageConfig();
  //父路径
  pc.setParent("com.miya.hh.order");
  pc.setEntity("data");
  pc.setService("service");
  pc.setMapper("mapper");
  pc.setServiceImpl("service.impl");
  mpg.setPackageInfo(pc);    //自增时间
  List<TableFill> tableFillList = new ArrayList<>();
  TableFill createField = new TableFill("create_time", FieldFill.INSERT);
  TableFill modifiedField = new TableFill("update_time", FieldFill.INSERT_UPDATE);
  tableFillList.add(createField);
  tableFillList.add(modifiedField);     
   // 策略配置
  StrategyConfig strategy = new StrategyConfig();
  strategy.setNaming(NamingStrategy.underline_to_camel);
  strategy.setColumnNaming(NamingStrategy.underline_to_camel);
  strategy.setEntityLombokModel(true);
  // 设置逻辑删除键
  strategy.setLogicDeleteFieldName("deleted");
  // TODO 指定生成的bean的数据库表名
  strategy.setInclude("message","message_template");
  // 驼峰转连字符
  strategy.setControllerMappingHyphenStyle(true);
  mpg.setStrategy(strategy);
  // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!
  mpg.setTemplateEngine(new FreemarkerTemplateEngine());
  mpg.execute();    }
}

3. 配置

#集成mybats-plus
mybatis-plus:
 # 实体类所在package
  type-aliases-package: com.miya.hh.order.data
  type-aliases-super-type: java.lang.Object
  #逻辑删除
  global-config:
    db-config:
      logic-delete-value: 0
      logic-not-delete-value: 1
 # 枚举所在package
  type-enums-package: com.miya.hh.order.common
  # 是否开启自动驼峰命名规则 MyBatis默认值false configuration:
  map-underscore-to-camel-case: false

4. 分页配置、数据填充

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    public GlobalConfig globalConfig(){
        GlobalConfig globalConfig=new GlobalConfig();
        globalConfig.setMetaObjectHandler(new Metahandler());
        return globalConfig;
    }
}


//自动填充时间
@Component public class Metahandler implements MetaObjectHandler {
    @Override
  public void insertFill(MetaObject metaObject) {
        String field1 = "createTime";
  String field2 = "updateTime";
  fillField(metaObject, field1, field2);
  }

    @Override
  public void updateFill(MetaObject metaObject) {
        String field = "updateTime";
  fillField(metaObject, field);
  }

    private void fillField(MetaObject metaObject, String... fields) {
        for (String field : fields) {
            if (metaObject.hasSetter(field) && metaObject.getValue(field) == null) {
                setFieldValByName(field, LocalDateTime.now(), metaObject);
  }
        }
    }
}

使用方式:
@TableField(fill = FieldFill.INSERT) (插入时填充)
@TableField(fill = FieldFill.INSERT_UPDATE) (插入编辑时填充)

5.枚举的使用

public enum CancelType {
        SYSTEM(0, "系统取消"),
        MCH(1, "商家取消"),
        USER(2, "用户取消");

        @EnumValue //在需要在数据库插入的数据上添加注解
        public final Integer code;

        public final String desc;

        public Integer getCode() {
            return code;
        }

        CancelType(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

6. 多数据源的使用



       //mybatis的SqlSessionFactoryBean需要替换为mybatisplus的MybatisSqlSessionFactoryBean
       
       MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
       
        factoryBean.setDataSource(allInOneDs);
        //枚举所在package        factoryBean.setTypeEnumsPackage("com.miya.huihua.coupon.common");
        //全局配置
        factoryBean.setGlobalConfig(new GlobalConfig().setMetaObjectHandler(new Metahandler()));
        //手动设置session工厂时,需要手动添加分页插件
        Interceptor[] plugins = new Interceptor[1];
        plugins[0] = paginationInterceptor();
        factoryBean.setPlugins(plugins);
        return factoryBean.getObject();

相关文章

网友评论

      本文标题:mybatisPlus 的集成使用

      本文链接:https://www.haomeiwen.com/subject/jnpjmctx.html