MyBatis-Plus——逆向工程之AutoGenerator代码生成器
Posted 张起灵-小哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus——逆向工程之AutoGenerator代码生成器相关的知识,希望对你有一定的参考价值。
1.案例详解
首先在Navicat中创建一张表。
创建一个SpringBoot项目,在pom文件中添加相关依赖。
大部分依赖我们都是见过的,因为这里需要使用MP框架中的逆向工程生成代码,所以还需要一个模板引擎依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
在核心配置文件中添加数据库连接的相关信息。
#配置数据库的相关连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=12345678
#配置对应的日志信息
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
编写代码生成的核心类。
package com.szh.mybatisplus;
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.NamingStrategy;
/**
*
*/
public class AutoMapper {
public static void main(String[] args) {
//创建代码生成器
AutoGenerator ag=new AutoGenerator();
//设置全局配置
GlobalConfig gc=new GlobalConfig();
//设置代码的生成位置(磁盘目录)
String path=System.getProperty("user.dir");
gc.setOutputDir(path + "/02-end/src/main/java");
//设置生成的作者
gc.setAuthor("张起灵-小哥");
//设置生成的类名
gc.setMapperName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setControllerName("%sController");
//设置主键id的配置
gc.setIdType(IdType.AUTO);
//将全局配置信息提交给代码生成器
ag.setGlobalConfig(gc);
//设置数据源DataSource
DataSourceConfig ds=new DataSourceConfig();
ds.setDriverName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8");
ds.setUsername("root");
ds.setPassword("12345678");
//将数据源信息提交给代码生成器
ag.setDataSource(ds);
//设置Package包
PackageConfig pc=new PackageConfig();
//设置生成的父级包、当前包
pc.setModuleName("exam");
pc.setParent("com.szh.mybatisplus");
//将包信息提交给代码生成器
ag.setPackageInfo(pc);
//设置策略信息
StrategyConfig sc=new StrategyConfig();
//设置数据库表的命名规则:支持驼峰命名法
sc.setNaming(NamingStrategy.underline_to_camel);
//设置数据库表中字段的命名规则,支持驼峰命名法
sc.setColumnNaming(NamingStrategy.underline_to_camel);
//将策略信息提交给代码生成器
ag.setStrategy(sc);
//执行代码的生成
ag.execute();
}
}
运行上面这个核心主类。即可自动生成如下代码:👇👇👇
这里之所以生成了两个实体类,是因为我连接的数据库是springdb,在这个数据库中有两张表。
在编写测试代码之前,要记着在SpringBoot项目的启动入口类上,添加@MapperScan注解。
package com.szh.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.szh.mybatisplus.exam")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
编写几个测试方法,测试一下我们生成的代码是否可以正常运行。(首先将需要用到的mapper接口注入到Spring容器中)
@Resource
private StudentMapper studentMapper;
@Test
void testInsertStudent() {
Student student = new Student();
student.setName("张起灵");
student.setAge(18);
student.setEmail("zql@sina.com");
student.setStatus(1);
int rows=studentMapper.insert(student);
System.out.println("insert的结果:" + rows);
}
@Test
void testSelectStudentById() {
Student student=studentMapper.selectById(7);
System.out.println("select的结果:" + student);
}
@Test
void testSelectStudent() {
QueryWrapper<Student> qw=new QueryWrapper<>();
qw.lt("age",25);
qw.isNotNull("email");
List<Student> studentList=studentMapper.selectList(qw);
for (Student stu : studentList) {
System.out.println("select的结果:" + stu);
}
}
以上是关于MyBatis-Plus——逆向工程之AutoGenerator代码生成器的主要内容,如果未能解决你的问题,请参考以下文章