Lombook
在shop-user-service模块下添加maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--项目中添加 spring-boot-starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在shop-user-service模块中加入common项目
<dependency>
<groupId>com.guslegend</groupId>
<artifactId>shop-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
在聚合工程的pom文件中修改Lombook的作用域范围
<!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16-->
<!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<!--<scope>provided</scope>-->
</dependency>
Lombok 常用注解说明
- @Getter / @Setter:作用于类上时,为所有成员变量生成 getter/setter 方法;作用于成员变量上时,仅为该变量生成 getter/setter 方法。
- @ToString:作用于类,覆盖默认的 toString () 方法,生成包含类信息和成员变量的字符串。
- @EqualsAndHashCode:作用于类,覆盖默认的 equals 和 hashCode 方法,方便对象之间的比较和哈希操作。
- @NoArgsConstructor:作用于类,生成无参构造器。
- @AllArgsConstructor:作用于类,生成包含所有成员变量的全参构造器。
- @Data:作用于类上,是 @ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor 的集合,可简化多个注解的使用。
- @Log / @Slf4j:作用于类上,生成日志变量,用于记录日志(需项目中已添加 log 依赖)。若注解不生效,需检查 Lombok 插件配置,更新插件并重启 idea。
Mybatis-plus
在开发过程中,当需要编写数据库表的 CRUD 接口时,常规流程往往是先编写实体类,接着依次编写 Controller、Service、DAO,最后还要编写 XML 文件。尤其是在管理后台这类场景中,多数操作都是简单的 CRUD,这时使用普通的 MyBatis 就显得有些鸡肋,流程繁琐且重复劳动较多。
而 MyBatis-Plus(官网:https://baomidou.com/)作为 MyBatis 的增强工具,很好地解决了这一问题。它在 MyBatis 的基础上只做增强不做改变,核心目标是简化开发、提高效率。
其增强之处主要在于:已经封装好了一系列 CRUD 方法,开发者无需再编写 XML 文件,直接调用这些现成的方法即可完成常见的数据操作。这一点类似 JPA,但在功能和灵活性上往往优于 JPA,能让开发者更专注于业务逻辑的实现,减少重复的代码编写工作。
SpringBoot里面整合 ( 添加maven依赖在common模块中 ,并在shop-user模块里面测试 )
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
Mybatis-plus-generator代码自动生成工具
底层是模板引擎技术,可以自定义生成的java类模板
基础版 mybatis-generator
进阶版 mybatis-plus-generator
-
在
common模块中添加maven依赖<!-- 代码自动生成依赖 begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <!-- velocity --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!-- 代码自动生成依赖 end--> -
代码 ( 需要更改标记TODO的 )
import com.baomidou.mybatisplus.annotation.DbType;
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.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;public class MyBatisPlusGenerator {
public static void main(String[] args) { //1. 全局配置 GlobalConfig config = new GlobalConfig(); // 是否支持AR模式 config.setActiveRecord(true) // 作者 .setAuthor("guslegend") // 生成路径,最好使用绝对路径,window路径是不一样的 //TODO TODO TODO TODO .setOutputDir("D:\\XM\\shop1024\\dev-ops\\generator") // 文件覆盖 .setFileOverride(true) // 主键策略 .setIdType(IdType.AUTO) .setDateType(DateType.ONLY_DATE) // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的 .setServiceName("%sService") //实体类结尾名称 .setEntityName("%sDO") //生成基本的resultMap .setBaseResultMap(true) //不使用AR模式 .setActiveRecord(false) //生成基本的SQL片段 .setBaseColumnList(true); //2. 数据源配置 DataSourceConfig dsConfig = new DataSourceConfig(); // 设置数据库类型 dsConfig.setDbType(DbType.MYSQL) .setDriverName("com.mysql.cj.jdbc.Driver") //TODO TODO TODO TODO .setUrl("jdbc:mysql://127.0.0.1:3306/xdclass_user?useSSL=false") .setUsername("root") .setPassword("123456"); //3. 策略配置globalConfiguration中 StrategyConfig stConfig = new StrategyConfig(); //全局大写命名 stConfig.setCapitalMode(true) // 数据库表映射到实体的命名策略 .setNaming(NamingStrategy.underline_to_camel) //使用lombok .setEntityLombokModel(true) //使用restcontroller注解 .setRestControllerStyle(true) // 生成的表, 支持多表一起生成,以数组形式填写 //TODO TODO TODO TODO .setInclude("user","address"); //4. 包名策略配置 PackageConfig pkConfig = new PackageConfig(); pkConfig.setParent("com.guslegend") .setMapper("mapper") .setService("service") .setController("controller") .setEntity("model") .setXml("mapper"); //5. 整合配置 AutoGenerator ag = new AutoGenerator(); ag.setGlobalConfig(config) .setDataSource(dsConfig) .setStrategy(stConfig) .setPackageInfo(pkConfig); //6. 执行操作 ag.execute(); System.out.println("======= guslgened Done 相关代码生成完毕 ========"); }}
-
导入生成代码
只需要拷贝mapper,mapper.xml,controller模块,service和serviceImpl模块自己编写
