已有的springcloud+mybatis項目升級為mybatis-plus的方法
已有的springcloud+mybatis項目升級為mybatis-plus
項目模塊目錄
將mybatis依賴替換為mybatis-plus
修改配置文件
實體類如果與數據庫不同名需要加上@TableName
@Data @TableName("project_base") public class ProjectBase { @TableId(value = "id", type = IdType.UUID)//id看具體項目要求如果是後臺生成則不需要type屬性,如果不是後臺生成不管是自增還是唯一鍵還是填入都需type屬性 private String id; private String prjid; private String ccode; private String cname; private String orgbuild; @TableField(fill = FieldFill.INSERT_UPDATE)、//自動填充時間需要一個繼承MetaObjectHandler的類,下一個 private Date createtime; @TableField(fill = FieldFill.UPDATE) private Date updatetime; @TableLogic//需要配置文件開啟邏輯刪除 private Boolean del; @Version//版本字段數據庫不是一定為version隻需要在版本字段上加上註解就可以 private Integer version;
package com.itpm.server.Handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; @Component @Slf4j public class MyMateHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createtime",new Date(),metaObject); this.setFieldValByName("updatetime",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updatatime",new Date(),metaObject); } }
繼承BaseMapper
原有接口可以不變,也可以把同名的接口名改瞭,比如plus的insert和原有的insert同名
package com.itpm.server.mapper.project; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.itpm.server.domain.project.ProjectBase; import com.itpm.server.domain.project.ProjectBaseExample; import com.itpm.server.dto.project.ProjectBaseDto; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; public interface ProjectBaseMapper extends BaseMapper<ProjectBase> { long countByExample(ProjectBaseExample example); int deleteByExample(ProjectBaseExample example); int deleteByPrimaryKey(String id); int insertlist(List<ProjectBase> list); int insert(ProjectBase record); int insertSelective(ProjectBase record); List<ProjectBaseDto> selectByExample(ProjectBaseExample example); ProjectBaseDto selectByPrimaryKey(String id); int updateByExampleSelective(@Param("record") ProjectBase record, @Param("example") ProjectBaseExample example); int updateByExample(@Param("record") ProjectBase record, @Param("example") ProjectBaseExample example); int updateByPrimaryKeySelective(ProjectBase record); int updateByPrimaryKey(ProjectBase record); ProjectBaseDto selectByPrjid(Map map); List<ProjectBaseDto> selectByprojectoverview(String prjid); List<ProjectBaseDto> selectProjectByExample(ProjectBaseExample example); List<ProjectBaseDto> selectProjectByparams(@Param("record") Map record); }
Service層
service層可以繼承IService。如果想都自己寫不繼承也可以
代碼生成器
與之前的mybatis代碼生成器不沖突,可以選擇也可以一起用
我的要生成在公共模塊server下
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.29</version> </dependency>
“`默認的是freemaker模板可以用其他的,需要導入其他依賴並且代碼設置如下,當然可以做成一個util方便,mapper.xml默認生成在mapper層下xml包下,如果需要在resouce下生成需要自定義輸出位置
package com.itpm.generator.server; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.po.TableFill; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.io.File; import java.util.ArrayList; import java.util.List; public class ProjectKing { public static void main(String[] args) { //需要構建一個代碼自動生成器對象 AutoGenerator autoGenerator = new AutoGenerator(); //配置策略 //1.全局配置 GlobalConfig globalConfig = new GlobalConfig(); File file = new File("server"); String path = file.getAbsolutePath(); // String property = 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設置數據源 DataSourceConfig dataSourceConfig = new DataSourceConfig(); 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); //包的配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setModuleName("server"); String a="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); // 自定義配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; // 模板引擎 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 模板引擎 velocity // String templatePath = "/templates/mapper.xml.vm"; // 自定義輸出配置 List<FileOutConfig> focList = new ArrayList<>(); // 自定義配置會被優先輸出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定義輸出文件名 , 如果你 Entity 設置瞭前後綴、此處註意 xml 的名稱會跟著發生變化!! return path + "/src/main/resources/mapper/" + a + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); /* cfg.setFileCreate(new IFileCreate() { @Override public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { // 判斷自定義文件夾是否需要創建 checkDir("調用默認方法創建的目錄,自定義目錄用"); if (fileType == FileType.MAPPER) { // 已經生成 mapper 文件判斷存在,不想重新生成返回 false return !new File(filePath).exists(); } // 允許生成模板文件 return true; } }); */ cfg.setFileOutConfigList(focList); autoGenerator.setCfg(cfg); templateConfig.setXml(null); autoGenerator.setTemplate(templateConfig); autoGenerator.setPackageInfo(packageConfig); //4策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); ArrayList<String> objects = new ArrayList<>(); // objects.add("etest"); objects.add("rtest"); strategyConfig.setInclude(objects.toArray(new String[objects.size()]));//設置要映射的表名 // strategyConfig.setSuperEntityClass(""); strategyConfig.setEntityLombokModel(true);//自動lombok strategyConfig.setRestControllerStyle(true); strategyConfig.setLogicDeleteFieldName("deletedd");//邏輯刪除字段 //自動填充配置 TableFill createtime = new TableFill("create_time", FieldFill.INSERT); TableFill updatetime = new TableFill("update_time", FieldFill.UPDATE); ArrayList<TableFill> tableFills = new ArrayList<>(); strategyConfig.setTableFillList(tableFills); //樂觀鎖 strategyConfig.setVersionFieldName("berv"); strategyConfig.setRestControllerStyle(true); strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2 autoGenerator.setStrategy(strategyConfig); autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine()); //執行 autoGenerator.execute(); } }
到此這篇關於已有的springcloud+mybatis項目升級為mybatis-plus的方法的文章就介紹到這瞭,更多相關springcloud+mybatis項目升級為mybatis-plus內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MyBatis-Plus逆向工程——Generator的使用
- MyBatisPlus代碼生成器的原理及實現詳解
- 詳解使用Mybatis-plus + velocity模板生成自定義的代碼
- Springboot Mybatis Plus自動生成工具類詳解代碼
- mybatis plus generator 根據數據庫自動生成實體類的實現示例