javaee论坛

普通会员

225648

帖子

338

回复

352

积分

楼主
发表于 2019-10-30 19:11:06 | 查看: 55 | 回复: 3

1、先建立一个项目。

 

2、pom文件的引用。

<properties><mybatis-plus-boot-starter.version>2.1.9</mybatis-plus-boot-starter.version><mysql.version>5.1.47</mysql.version></properties><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus-boot-starter.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>compile</scope></dependency>

3、建立数据库及表。

4、java代码。将代码中的常量进行替换,就可以直接生成代码了。表名要是多个单词组成,建议用下划线分隔。

importcom.baomidou.mybatisplus.enums.IdType;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;importcom.baomidou.mybatisplus.generator.config.GlobalConfig;importcom.baomidou.mybatisplus.generator.config.PackageConfig;importcom.baomidou.mybatisplus.generator.config.StrategyConfig;importcom.baomidou.mybatisplus.generator.config.rules.DbType;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;publicclassCodeGenerator{privatestaticfinalStringdriverName="com.mysql.jdbc.Driver";privatestaticfinalStringurl="jdbc:mysql://localhost:3306/zxj_sql";privatestaticfinalStringuser="root";privatestaticfinalStringpassword="123456";privatestaticfinalString[]tableName={"eco_reptile_good","eco_reptile_shop","eco_good_info"};privatestaticfinalStringpackageName="com.zxj.reptile.module.ecommerce";privatestaticfinalStringauthor="zxj";privatestaticfinalStringentitySuperPackageName="com.zxj.reptile.module.AbstractEntity";privatestaticfinalString[]entityColumns={"id"};publicstaticvoidmain(String[]args){DataSourceConfigdataSourceConfig=newDataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL).setUrl(url).setUsername(user).setPassword(password).setDriverName(driverName);StrategyConfigstrategyConfig=newStrategyConfig();strategyConfig.setSuperEntityClass(entitySuperPackageName).setSuperEntityColumns(entityColumns).setCapitalMode(true).setEntityLombokModel(false).setDbColumnUnderline(true).setNaming(NamingStrategy.underline_to_camel).setInclude(tableName);//修改替换成你需要的表名,多个表名传数组GlobalConfigglobalConfig=newGlobalConfig();globalConfig.setActiveRecord(false).setEnableCache(false)//是否开启二级缓存.setIdType(IdType.ID_WORKER_STR).setAuthor(author).setOutputDir("c:\\cn").setFileOverride(true).setServiceName("I%sService");//user->IUserService,设置成true:user->IUserServiceAutoGeneratorautoGenerator=newAutoGenerator();autoGenerator.setGlobalConfig(globalConfig).setDataSource(dataSourceConfig).setStrategy(strategyConfig).setPackageInfo(newPackageConfig().setParent(packageName).setController("controller").setEntity("entity")).execute();}}

5、自动生成的代码。

importcom.baomidou.mybatisplus.annotations.TableId;importcom.baomidou.mybatisplus.enums.IdType;importjava.io.Serializable;/***<p>**</p>**@authorzxj*@since2019-09-25*/publicclassDemoimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@TableId(value="id",type=IdType.ID_WORKER_STR)privateStringid;privateStringcontent;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetContent(){returncontent;}publicvoidsetContent(Stringcontent){this.content=content;}@OverridepublicStringtoString(){return"Demo{"+",id="+id+",content="+content+"}";}}

6、目录结构总览。

 

7、关于mapper包扫描不到的解决方法。

  第一种是在位于zxj-reptile-api子模块下的ApiApplication.java中添加@MapperScan注解。

packagecom.zxj.reptile;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.transaction.annotation.EnableTransactionManagement;importspringfox.documentation.swagger2.annotations.EnableSwagger2;@EnableTransactionManagement@SpringBootApplication@MapperScan("com.zxj.reptile.module.*.mapper")@EnableSwagger2publicclassApiApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ApiApplication.class,args);}}

第二种是在位于zxj-reptile-manage子模块下的DemoMapper.java中添加@Mapper注解

@MapperpublicinterfaceDemoMapperextendsBaseMapper<Demo>{} 二、

1、我们如果对自动生成的主键id不满意的话,也可以通过创建一个父类,来对id进行统一的规划。首先创建一个父类。

packagecom.zxj.reptile.module;importcom.baomidou.mybatisplus.annotations.TableId;importjava.io.Serializable;importjava.util.UUID;publicabstractclassAbstractEntityimplementsSerializable{@TableId(value="id")privateStringid;publicStringgetId(){if(id==null||id.isEmpty()){this.id=UUID.randomUUID().toString().replaceAll("-","");}returnthis.id;}publicvoidsetId(Stringid){this.id=id;}}

 

2、在代码生成器CodeGenerator中添加几行代码,并在main方法中修改StrategyConfig。

privatestaticfinalStringentitySuperPackageName="com.zxj.reptile.module.AbstractEntity";privatestaticfinalString[]entityColumns={"id"};StrategyConfigstrategyConfig=newStrategyConfig();strategyConfig.setSuperEntityClass(entitySuperPackageName).setSuperEntityColumns(entityColumns).setCapitalMode(true).setEntityLombokModel(false).setDbColumnUnderline(true).setNaming(NamingStrategy.underline_to_camel).setInclude(tableName);//修改替换成你需要的表名,多个表名传数组

3、现在来看看自动生成的代码,除了entity不一样,剩下的都一样。

importcom.zxj.reptile.module.AbstractEntity;/***<p>**</p>**@authorzxj*@since2019-09-25*/publicclassDemoextendsAbstractEntity{privatestaticfinallongserialVersionUID=1L;privateStringcontent;publicStringgetContent(){returncontent;}publicvoidsetContent(Stringcontent){this.content=content;}@OverridepublicStringtoString(){return"Demo{"+",content="+content+"}";}}

 

有任何问题,欢迎下方留言。

普通会员

0

帖子

337

回复

374

积分
沙发
发表于 2023-11-22 09:20:33

很好

0

帖子

291

回复

295

积分
板凳
发表于 2023-11-29 03:00:06

如果你智商能再高点,也许我会上当

普通会员

0

帖子

313

回复

324

积分
地板
发表于 2024-04-17 16:01:00

记录一下

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017