mybatis-plus-autoGenerator(自動コードジェネレータ構成)
45694 ワード
ヒント:文章が書き終わると、ディレクトリが自動的に生成されます.右側のヘルプドキュメントを生成する方法
mybatis-plus-AutoGenerator使用手順 1.導入依存 2.mybaitsconfig(ページングプラグイン、楽観ロックの構成) 3.MetaObjectHandler(自動充填処理の構成) 4.自動生成コード(AutoGenerator) 5.application.yml構成 6.JacksonConfig(雪花アルゴリズムの精度喪失問題を解決) 7.Oracleシーケンス自己増加ポリシー まとめ 手順の使用
1.導入依存
コードは次のとおりです(例).
2.mybaitsconfig(ページングプラグイン、楽観ロックの構成)
コードは次のとおりです(例).
3.MetaObjectHandler(自動充填処理の構成)
コードは次のとおりです(例).
4.自動生成コード(AutoGenerator)
コードは次のとおりです(例).
5.application.yml構成
コードは次のとおりです(例).
6.JacksonConfig(雪花アルゴリズムの精度喪失問題を解決)
コードは次のとおりです(例).
7.Oracleシーケンスの自己増加ポリシー
Oracleのプライマリ・キーがnumberであり、短すぎて雪アルゴリズムを使用できない場合、ymlプロファイルを追加できません.
エンティティークラスに追加:
beanを登録します.
補足:このフィールドがデータベース・テーブル内のフィールドではないことを注記で宣言します.
まとめ
勤勉な菜鶏
mybatis-plus-AutoGenerator
1.導入依存
コードは次のとおりです(例).
<!-- mybatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!-- mybatisPlus Velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!-- mybatisPlus Freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
<!--mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.2</version>
</dependency>
2.mybaitsconfig(ページングプラグイン、楽観ロックの構成)
コードは次のとおりです(例).
package com.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@MapperScan("com.mapper")
@EnableTransactionManagement
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
//
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
3.MetaObjectHandler(自動充填処理の構成)
コードは次のとおりです(例).
package com.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.time.LocalDateTime;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
// update ,
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
4.自動生成コード(AutoGenerator)
コードは次のとおりです(例).
package com;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
public class CodeGenerator {
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(false);
//
gc.setFileOverride(false);
// Service I
gc.setServiceName("%sService");
//
gc.setIdType(IdType.ASSIGN_ID);
// Swagger2
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
gc.setDateType(DateType.TIME_PACK);
//
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/chen?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123");
//
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//
PackageConfig pc = new PackageConfig();
pc.setParent("com");
mpg.setPackageInfo(pc);
//
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
//
strategy.setInclude("user");
// localhost:8080/hello_id_2
strategy.setControllerMappingHyphenStyle(true);
//
strategy.setLogicDeleteFieldName("deleted");
//
TableFill gmtCreate = new TableFill("create_time", FieldFill.INSERT);
TableFill gmtModified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(gmtCreate);
tableFills.add(gmtModified);
strategy.setTableFillList(tableFills);
//
strategy.setVersionFieldName("version");
mpg.setStrategy(strategy);
mpg.execute();
}
}
5.application.yml構成
コードは次のとおりです(例).
#
spring.application.name=springboot-mybatis-plus
# WEB
server.port=8090
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/chen?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123
mybatis-plus.type-aliases-package=com.entity
# ( )
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
6.JacksonConfig(雪花アルゴリズムの精度喪失問題を解決)
コードは次のとおりです(例).
package com.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// JSON
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}
7.Oracleシーケンスの自己増加ポリシー
Oracleのプライマリ・キーがnumberであり、短すぎて雪アルゴリズムを使用できない場合、ymlプロファイルを追加できません.
#id (oracle )
mybatis-plus:
global-config:
db-config:
id-type: input
エンティティークラスに追加:
@KeySequence("Oracle ")
public class Vip implements Serializable {
@ApiModelProperty(value = " ")
@TableId(value = "VID", type = IdType.INPUT)
private Long vid;
***********************************
}
beanを登録します.
//
@Bean
public OracleKeyGenerator oracleKeyGenerator(){
return new OracleKeyGenerator();
}
補足:このフィールドがデータベース・テーブル内のフィールドではないことを注記で宣言します.
@TableField(exist = false)
private String status;
まとめ
勤勉な菜鶏