一、建立一个SpringBoot Web项目,导入MyBatis-Plus所需依赖
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis-plus代码生成依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<!--mybatis-plus官方指定模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
二、编写代码生成类,完成相关配置
package com.example.demo;
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.NamingStrategy;
/**
* 代码生成 示例代码
*/
public class CodeGenerator {
public static void main(String[] args) {
// 1. 全局配置
GlobalConfig config = new GlobalConfig();
config.setAuthor("shphuang")//作者
.setOpen(false)//生成代码后不打开文件
.setOutputDir(System.getProperty("user.dir")+"\\src\\main\\java")//生成路径
.setFileOverride(true)//设置文件覆盖
.setIdType(IdType.AUTO)//主键策略
.setMapperName("%sMapper")//设置mapper文件的名称
.setXmlName("%sMapper")//设置mapper映射文件名称
.setServiceName("I%sService")//设置生成的service接口的名字的首字母是否为I
.setServiceImplName("%sServiceImpl")//设置生成的service.impl接口的名字
.setControllerName("%sController")//设置生成的controller接口的名字
.setBaseResultMap(true)//生成结构集映射
.setBaseColumnList(true);//生成sql字段
//2. 数据源配置(mysql8.0+)
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL)//设置数据库类型
.setDriverName("com.mysql.cj.jdbc.Driver")//设置数据库驱动
.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8")//设置数据库地址
.setUsername("root")//数据库用户名
.setPassword("密码");//数据库密码
/* //2. 数据源配置(mysql5.0+)
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL)//设置数据库类型
.setDriverName("com.mysql.jdbc.Driver")//设置数据库驱动
.setUrl("jdbc:mysql://localhost:3306/test")//设置数据库地址
.setUsername("root")//数据库用户名
.setPassword("密码");//数据库密码*/
//3. 策略配置
StrategyConfig sc = new StrategyConfig();
sc.setCapitalMode(true)//开启全局大写命名
.setEntityLombokModel(true)//设置使用Lombok注解,简化实体类
.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体策略
.setTablePrefix("tbl_")
//这里非常重要,指定数据库中表的名称,可以指定多张表
.setInclude(new String[]{"tbl_user"});//指定数据库要生成的表
//4. 包名策略配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.demo")//指定父包
.setController("controller")
.setService("service")
.setEntity("beans")
.setServiceImpl("service.impl")
.setMapper("mapper")
.setXml("mapper");
//5. 整合配置
AutoGenerator ag = new AutoGenerator();
ag.setGlobalConfig(config)
.setDataSource(dsc)
.setStrategy(sc)
.setPackageInfo(pc)
.execute();//开始自动生成代码
}
}
生成结果:
三、测试代码
-
导入mybatis-plus起步依赖,这里导入了mybatis-plus起步依赖就不需要再导入mybatis的依赖了
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
-
在SpringBoot入口类添加注解@MapperScan,指定mapper类的位置
@MapperScan(basePackages = "com.example.demo.mapper")
-
配置application.yml文件,完成数据库连接的基本配置
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8 username: root password: 密码
-
编写测试代码,测试生成代码是否正常可用
@SpringBootTest class MybatisPlusCodeGeneratorApplicationTests { /** * 注入IUserService实现类 */ @Autowired IUserService userService; /** * 测试生成代码是否可用 */ @Test void testCode() { // 查询所有数据 userService.list().forEach((user)->{ System.out.println(user); }); // 查询User年龄大于22的 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.lt("age",22); userService.list(wrapper).forEach((user)->{ System.out.println(user); }); } }
五、用于测试的sql语句
CREATE DATABASE test
USE test;
DROP TABLE IF EXISTS USER;
CREATE TABLE tbl_user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM USER;
INSERT INTO tbl_user (id, NAME, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
六、源码分享
链接:https://pan.baidu.com/s/1UCF-r1UGciMS_nDHCa64Cw
提取码:r6gv