好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot整合mybatis-plus代码生成器的配置解析

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
具体实实现以及配置解析如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

package mybatis_plus;

 

 

import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.annotation.FieldFill;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;

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 org.apache测试数据mons.lang3.StringUtils;

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

 

public class CodeGenerator {

   public static String scanner(String tip) {

     Scanner scanner = new Scanner(System.in);

     StringBuilder help = new StringBuilder();

     help.append( "请输入" + tip + ":" );

     System.out.println(help.toString());

     if (scanner.hasNext()) {

       String ipt = scanner.next();

       if (StringUtils.isNotBlank(ipt)) {

         return ipt;

       }

     }

     throw new MybatisPlusException( "请输入正确的" + tip + "!" );

   }

   public static void main(String[] args) {

     // 构建代码生成器

     AutoGenerator mpg = new AutoGenerator();

     //配置策略

 

     //1.全局配置

     GlobalConfig gc = new GlobalConfig();

     String projectPath = System.getProperty( "user.dir" );

     gc.setOutputDir(projectPath + "/src/main/java" );

     gc.setAuthor( "heroMps" );

     gc.setOpen( false );

     gc.setFileOverride( false ); //是否覆盖

     gc.setServiceName( "%sService" ); //去除Service前面的I

     gc.setIdType(IdType.ID_WORKER);

     gc.setDateType(DateType.ONLY_DATE);

//    gc.setSwagger2(true); //实体属性 Swagger2 注解

     mpg.setGlobalConfig(gc);

     //2.设置数据源配置

     DataSourceConfig dsc = new DataSourceConfig();

     dsc.setUrl( "jdbc:mysql://127.0.0.1:3306/mybatis_plus?useUnicode=true&useSSL=false&characterEncoding=utf8" );

     // dsc.setSchemaName("public");

     dsc.setDriverName( "com.mysql.jdbc.Driver" );

     dsc.setUsername( "root" );

     dsc.setPassword( "root" );

     dsc.setDbType(DbType.MYSQL);

     mpg.setDataSource(dsc);

     //3.包配置

     PackageConfig pc = new PackageConfig();

//    pc.setModuleName("blog");

     pc.setParent( "mybatis_plus" );

     pc.setEntity( "entity" );

     pc.setMapper( "mapper" );

     pc.setService( "service" );

     pc.setController( "controller" );

     mpg.setPackageInfo(pc);

     // 自定义配置

     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 projectPath + "/src/main/resources/mapper/"

             + "/" + 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);

     mpg.setCfg(cfg);

 

     // 配置模板

     TemplateConfig templateConfig = new TemplateConfig();

 

     // 配置自定义输出模板

     //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别

     // templateConfig.setEntity("templates/entity2.java");

     // templateConfig.setService();

     // templateConfig.setController();

 

     templateConfig.setXml( null );

     mpg.setTemplate(templateConfig);

     //4.策略配置

     StrategyConfig strategy = new StrategyConfig();

     strategy.setInclude(scanner( "表名,多个英文逗号分割" ).split( "," ));

     strategy.setNaming(NamingStrategy.underline_to_camel);

     strategy.setColumnNaming(NamingStrategy.underline_to_camel);

     strategy.setEntityLombokModel( true );

     strategy.setLogicDeleteFieldName( "deleted" );

     //自动填充设置

     TableFill create_time = new TableFill( "create_time" , FieldFill.INSERT);

     TableFill update_time = new TableFill( "update_time" , FieldFill.INSERT_UPDATE);

     ArrayList<TableFill> list = new ArrayList<>();

     list.add(create_time);

     list.add(update_time);

     strategy.setTableFillList(list);

     //5.乐观锁配置

     strategy.setVersionFieldName( "version" );

     strategy.setRestControllerStyle( true );

     strategy.setControllerMappingHyphenStyle( true );

     mpg.setStrategy(strategy);

 

     mpg.execute();

   }

}

生成目录如下:

测试查询

到此这篇关于springboot整合mybatis-plus代码生成器的文章就介绍到这了,更多相关springboot整合mybatis-plus内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/heromps/article/details/114002390

查看更多关于springboot整合mybatis-plus代码生成器的配置解析的详细内容...

  阅读:17次