已有的springcloud+mybatis项目升级为mybatis-plus的方法
已有的springcloud+mybatis项目升级为mybatis-plus
项目模块目录
将mybatis依赖替换为mybatis-plus
修改配置文件
实体类如果与数据库不同名需要加上@TableName
@Data
@TableName("project_base")
publicclassProjectBase{
@TableId(value="id",type=IdType.UUID)//id看具体项目要求如果是后台生成则不需要type属性,如果不是后台生成不管是自增还是唯一键还是填入都需type属性
privateStringid;
privateStringprjid;
privateStringccode;
privateStringcname;
privateStringorgbuild;
@TableField(fill=FieldFill.INSERT_UPDATE)、//自动填充时间需要一个继承MetaObjectHandler的类,下一个
privateDatecreatetime;
@TableField(fill=FieldFill.UPDATE)
privateDateupdatetime;
@TableLogic//需要配置文件开启逻辑删除
privateBooleandel;
@Version//版本字段数据库不是一定为version只需要在版本字段上加上注解就可以
privateIntegerversion;
packagecom.itpm.server.Handler;
importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
importlombok.extern.slf4j.Slf4j;
importorg.apache.ibatis.reflection.MetaObject;
importorg.springframework.stereotype.Component;
importjava.util.Date;
@Component
@Slf4j
publicclassMyMateHandlerimplementsMetaObjectHandler{
@Override
publicvoidinsertFill(MetaObjectmetaObject){
this.setFieldValByName("createtime",newDate(),metaObject);
this.setFieldValByName("updatetime",newDate(),metaObject);
}
@Override
publicvoidupdateFill(MetaObjectmetaObject){
this.setFieldValByName("updatatime",newDate(),metaObject);
}
}
继承BaseMapper
原有接口可以不变,也可以把同名的接口名改了,比如plus的insert和原有的insert同名
packagecom.itpm.server.mapper.project; importcom.baomidou.mybatisplus.core.mapper.BaseMapper; importcom.itpm.server.domain.project.ProjectBase; importcom.itpm.server.domain.project.ProjectBaseExample; importcom.itpm.server.dto.project.ProjectBaseDto; importorg.apache.ibatis.annotations.Param; importjava.util.List; importjava.util.Map; publicinterfaceProjectBaseMapperextendsBaseMapper{ longcountByExample(ProjectBaseExampleexample); intdeleteByExample(ProjectBaseExampleexample); intdeleteByPrimaryKey(Stringid); intinsertlist(List list); intinsert(ProjectBaserecord); intinsertSelective(ProjectBaserecord); List selectByExample(ProjectBaseExampleexample); ProjectBaseDtoselectByPrimaryKey(Stringid); intupdateByExampleSelective(@Param("record")ProjectBaserecord,@Param("example")ProjectBaseExampleexample); intupdateByExample(@Param("record")ProjectBaserecord,@Param("example")ProjectBaseExampleexample); intupdateByPrimaryKeySelective(ProjectBaserecord); intupdateByPrimaryKey(ProjectBaserecord); ProjectBaseDtoselectByPrjid(Mapmap); List selectByprojectoverview(Stringprjid); List selectProjectByExample(ProjectBaseExampleexample); List selectProjectByparams(@Param("record")Maprecord); }
Service层
service层可以继承IService。如果想都自己写不继承也可以
代码生成器
与之前的mybatis代码生成器不冲突,可以选择也可以一起用
我的要生成在公共模块server下
com.baomidou mybatis-plus-generator 3.0.6 org.freemarker freemarker 2.3.29
```默认的是freemaker模板可以用其他的,需要导入其他依赖并且代码设置如下,当然可以做成一个util方便,mapper.xml默认生成在mapper层下xml包下,如果需要在resouce下生成需要自定义输出位置
packagecom.itpm.generator.server;
importcom.baomidou.mybatisplus.annotation.DbType;
importcom.baomidou.mybatisplus.annotation.FieldFill;
importcom.baomidou.mybatisplus.annotation.IdType;
importcom.baomidou.mybatisplus.core.toolkit.StringPool;
importcom.baomidou.mybatisplus.generator.AutoGenerator;
importcom.baomidou.mybatisplus.generator.InjectionConfig;
importcom.baomidou.mybatisplus.generator.config.*;
importcom.baomidou.mybatisplus.generator.config.po.TableFill;
importcom.baomidou.mybatisplus.generator.config.po.TableInfo;
importcom.baomidou.mybatisplus.generator.config.rules.DateType;
importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
importcom.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
importjava.io.File;
importjava.util.ArrayList;
importjava.util.List;
publicclassProjectKing{
publicstaticvoidmain(String[]args){
//需要构建一个代码自动生成器对象
AutoGeneratorautoGenerator=newAutoGenerator();
//配置策略
//1.全局配置
GlobalConfigglobalConfig=newGlobalConfig();
Filefile=newFile("server");
Stringpath=file.getAbsolutePath();
//Stringproperty=System.getProperty("user.dir");
globalConfig.setOutputDir(path+"/src/main/java");
globalConfig.setAuthor("蒋磊");
globalConfig.setOpen(false);
globalConfig.setBaseResultMap(true);
globalConfig.setBaseColumnList(true);
globalConfig.setFileOverride(false);//是否覆盖
globalConfig.setServiceName("%sService");//去service的i前缀
globalConfig.setIdType(IdType.UUID);
globalConfig.setDateType(DateType.ONLY_DATE);
globalConfig.setSwagger2(true);
autoGenerator.setGlobalConfig(globalConfig);
//2设置数据源
DataSourceConfigdataSourceConfig=newDataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://itpm.itycu.com/itpm?characterEncoding=UTF8&autoReconnect=true&&allowMultiQueries=true");
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("Itycu.8594");
dataSourceConfig.setDbType(DbType.MYSQL);
autoGenerator.setDataSource(dataSourceConfig);
//包的配置
PackageConfigpackageConfig=newPackageConfig();
packageConfig.setModuleName("server");
Stringa="project";
packageConfig.setParent("com.itpm");
//packageConfig.setEntity("entity");
//packageConfig.setMapper("mapper");
//packageConfig.setService("service");
//packageConfig.setController("controller");
packageConfig.setEntity("domain."+a);
packageConfig.setMapper("mapper."+a);
packageConfig.setService("service."+a);
packageConfig.setServiceImpl("service."+a+".impl");
packageConfig.setController("controller."+a);
//自定义配置
InjectionConfigcfg=newInjectionConfig(){
@Override
publicvoidinitMap(){
//todonothing
}
};
//模板引擎freemarker
StringtemplatePath="/templates/mapper.xml.ftl";
//模板引擎velocity
//StringtemplatePath="/templates/mapper.xml.vm";
//自定义输出配置
ListfocList=newArrayList<>();
//自定义配置会被优先输出
focList.add(newFileOutConfig(templatePath){
@Override
publicStringoutputFile(TableInfotableInfo){
//自定义输出文件名,如果你Entity设置了前后缀、此处注意xml的名称会跟着发生变化!!
returnpath+"/src/main/resources/mapper/"+a
+"/"+tableInfo.getEntityName()+"Mapper"+StringPool.DOT_XML;
}
});
/*
cfg.setFileCreate(newIFileCreate(){
@Override
publicbooleanisCreate(ConfigBuilderconfigBuilder,FileTypefileType,StringfilePath){
//判断自定义文件夹是否需要创建
checkDir("调用默认方法创建的目录,自定义目录用");
if(fileType==FileType.MAPPER){
//已经生成mapper文件判断存在,不想重新生成返回false
return!newFile(filePath).exists();
}
//允许生成模板文件
returntrue;
}
});
*/
cfg.setFileOutConfigList(focList);
autoGenerator.setCfg(cfg);
templateConfig.setXml(null);
autoGenerator.setTemplate(templateConfig);
autoGenerator.setPackageInfo(packageConfig);
//4策略配置
StrategyConfigstrategyConfig=newStrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
ArrayListobjects=newArrayList<>();
//objects.add("etest");
objects.add("rtest");
strategyConfig.setInclude(objects.toArray(newString[objects.size()]));//设置要映射的表名
//strategyConfig.setSuperEntityClass("");
strategyConfig.setEntityLombokModel(true);//自动lombok
strategyConfig.setRestControllerStyle(true);
strategyConfig.setLogicDeleteFieldName("deletedd");//逻辑删除字段
//自动填充配置
TableFillcreatetime=newTableFill("create_time",FieldFill.INSERT);
TableFillupdatetime=newTableFill("update_time",FieldFill.UPDATE);
ArrayListtableFills=newArrayList<>();
strategyConfig.setTableFillList(tableFills);
//乐观锁
strategyConfig.setVersionFieldName("berv");
strategyConfig.setRestControllerStyle(true);
strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setTemplateEngine(newFreemarkerTemplateEngine());
//执行
autoGenerator.execute();
}
}
到此这篇关于已有的springcloud+mybatis项目升级为mybatis-plus的方法的文章就介绍到这了,更多相关springcloud+mybatis项目升级为mybatis-plus内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。