Mybatis-plus配置
阿新 • • 發佈:2020-08-19
匯入pom依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--連線池-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--資料庫-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
<scope>runtime</scope>
</dependency>
新建一個MybatisPlusConfig.java檔案
@EnableTransactionManagement // 事物管理 @Configuration public class MyBatisPlus { // 樂觀鎖外掛 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor(){ return new OptimisticLockerInterceptor(); } // 分頁外掛 @Bean public PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor(); } // 邏輯刪除配置 @Bean public ISqlInjector iSqlInjector(){ return new LogicSqlInjector(); } // sql 效率外掛 @Bean @Profile({"dev","test"}) public PerformanceInterceptor performanceInterceptor(){ PerformanceInterceptor performanceInterceptor= new PerformanceInterceptor(); performanceInterceptor.setMaxTime(1000); // ms 最大執行時間超過不執行 performanceInterceptor.setFormat(true); // 是否開啟格式化支援 return performanceInterceptor; } }
在來點mybatis-plus的跟新策略
@Slf4j @Component public class MyMeteObject implements MetaObjectHandler { // 插入時的跟新策略 @Override public void insertFill(MetaObject metaObject) { log.info("stats info hander....."); this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); } // 修改時的跟新策略 @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", new Date(), metaObject); } }
在啟動類中掃描resources下的mapper檔案
在application.properties檔案新增資料庫和mybatis-plus配置
# mysql配置 mysql 8 版本需要配置時區 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dome?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC # 配置當前版本 開發環境 #spring.profiles.active=dev # redis配置 #spring.redis.host=127.0.0.1 #spring.redis.port=6379 #資料庫配置日誌 使用控制檯輸出 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #配置邏輯刪除 mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0
關鍵來了,mybatis給我們提供的程式碼自動生成器。在test中新建一個MybatisGenertot檔案,它可以幫助我們根據資料庫自動生成controller,service.....等基本程式碼。
public class MyBatisGenertor { public static void main(String[] args) { // 程式碼自動生成器 AutoGenerator autoGenerator = new AutoGenerator(); // 全域性配置 GlobalConfig globalConfig = new GlobalConfig(); // 導generator包 String property = System.getProperty("user.dir"); // 獲取使用者的目錄 globalConfig.setOutputDir(property + "src/main/java"); globalConfig.setAuthor("YarMar"); globalConfig.setFileOverride(false); globalConfig.setOpen(false); globalConfig.setServiceName("%sService"); // 去掉servic的i字首 globalConfig.setIdType(IdType.ID_WORKER); globalConfig.setDateType(DateType.ONLY_DATE); globalConfig.setSwagger2(true); autoGenerator.setGlobalConfig(globalConfig); // 設定資料來源 DataSourceConfig dt = new DataSourceConfig(); dt.setUrl("jdbc:mysql://localhost:3306/dome?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"); dt.setUsername("root"); dt.setPassword("123456"); dt.setDriverName("com.mysql.cj.jdbc.Driver"); // 包的配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setModuleName("bool"); packageConfig.setParent("com.dc.yamar"); packageConfig.setEntity("entity"); packageConfig.setMapper("mapper"); packageConfig.setService("service"); packageConfig.setController("controller"); autoGenerator.setPackageInfo(packageConfig); // 配置策略 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setInclude("user"); // 設定要隱射的表 可以多張 strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); strategyConfig.setEntityLombokModel(true); strategyConfig.setRestControllerStyle(true); strategyConfig.setLogicDeleteFieldName("isDelete"); // 邏輯刪除 // 自動填充 TableFill createTime = new TableFill("create_time", FieldFill.INSERT); TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE); ArrayList<TableFill> list = new ArrayList<>(); list.add(createTime); list.add(updateTime); strategyConfig.setTableFillList(list); strategyConfig.setVersionFieldName("version"); //樂觀鎖 strategyConfig.setRestControllerStyle(true); strategyConfig.setControllerMappingHyphenStyle(true); // 啟動下劃線 autoGenerator.setStrategy(strategyConfig); autoGenerator.execute(); //執行 } }
執行MybatisGenertot,搞定。