mybatisplus 代码生成器分为两个版本,mybatis-plus-generator 3.5.1 以下版本和mybatis-plus-generator 3.5.1 以上版本
mybatis-plus-generator 3.5.1 以下版本使用
添加依赖:
<!-- mybatisPlus 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
编写自动代码生成类
public class MysqlGenerator {
/**
* 代码生成,示例代码
*
*/
public static void main(String[] args) {
// 全局配置
GlobalConfig config = new GlobalConfig();
config.setActiveRecord(true);//是否支持AR模式
config.setAuthor("lfh");//作者
config.setOutputDir(System.getProperty("user.dir") + "\\src\\main\\java");//生成路径
config.setFileOverride(true);//文件覆盖
config.setIdType(IdType.AUTO);//自增策略
config.setServiceName("%sService");//设置生成的service接口的名字首字母是否有I
config.setBaseResultMap(true);
config.setBaseColumnList(true);
//2.数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);//设置数据库类型
dsc.setUrl("jdbc:mysql://localhost:3306/springboot-test-db?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
//3.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(true);//开启全局大写命名
strategyConfig.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategyConfig.setTablePrefix("tbl_");//表的前缀
strategyConfig.setInclude("tbl_user");//需要生成的表
//4.包名策略配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.springboot")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("bean")
.setXml("mapper");
//5.整合配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(config)
.setDataSource(dsc)
.setStrategy(strategyConfig)
.setPackageInfo(pc);
//6.执行
autoGenerator.execute();
}
}
mybatis-plus-generator 3.5.1 以上版本
添加依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
编写自动代码生成类
public class MybatisPlusGenerator {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/springboot-test-db?useUnicode=true&useSSL=false&characterEncoding=utf8";
String username = "root";
String password = "root";
//表名集合
List<String> tables = new ArrayList<>();
tables.add("tbl_user");
FastAutoGenerator.create(url, username, password)
//全局配置
.globalConfig(builder -> {
builder.fileOverride() // 开启覆盖之前生成的文件
.disableOpenDir() //禁止打开输出目录
.outputDir(System.getProperty("user.dir") + "\\src\\main\\java") //指定输出目录
.author("lfh") //作者名
// .enableKotlin() //开启 kotlin 模式
// .enableSwagger() //开启 swagger 模式
.dateType(DateType.TIME_PACK) //时间策略
.commentDate("yyyy-MM-dd"); //注释日期
})
//包配置
.packageConfig(builder -> {
builder.parent("com.example.demo") //父包名
.entity("bean") //Entity 包名
.service("service") // Service 包名
.serviceImpl("service.impl") //Service Impl 包名
.mapper("mapper") //Mapper 包名
.xml("mapper.xml") // Mapper XML 包名
.controller("controller") //Controller 包名
.other("config") //自定义文件包名 输出自定义文件时所用到的包名
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));//指定xml位置
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude(tables)
.addTablePrefix("tbl_")//表名前缀,配置后生成的代码不会有此前缀
.serviceBuilder()
.formatServiceFileName("%sService")//服务层接口名后缀
.formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
.entityBuilder()
.enableLombok()//实体类使用lombok,需要自己引入依赖
//.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
.enableTableFieldAnnotation()//加上字段注解@TableField
.controllerBuilder()
.formatFileName("%sController")//控制类名称后缀
.enableRestStyle()
.mapperBuilder()
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
})
.execute();
}
}
下面是springboot整合MybatisPlus的步骤:
使用idea工具创建springboot项目,然后添加pom.xml文件依赖,配置application.yaml文件如下:
pom.xml文件依赖:(注意这里我只是把主要的依赖展示,数据库连接依赖,上面有MybatisPlus的依赖,这些基本的依赖,需要其他的自己导入)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
application.yaml配置:
server:
port: 8080
#数据库连接配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot-test-db?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: root
password: root
# MybatisPlus的配置
mybatis-plus:
#MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。
mapper-locations: classpath*:mapper/*.xml
#单独的 MyBatis 配置,请将其路径配置到 configLocation 中 注意 configuration与config-location不能一起用
# 错误原因已经提示的很清楚了 configuration 和 configLocation 不能同时存在 也就是说:在spring的配置文件指定了mybatis的配置文件 就不能在spring的配置里面写入mybatis的配置,所以报错。
# config-location: classpath*:mybatis-config.xml
# 实体对象的扫描包,MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名
# type-aliases-package: com.song.druid.test.domain
configuration:
#开启映射时驼峰命名
map-underscore-to-camel-case: true
#开启控制台 SQL 日志打印
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# auto-mapping-behavior: full
global-config:
db-config:
logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
#查看SQL日志
logging:
level:
com:
example:
demo:
mapper: debug
在主启动类上配置:@MapperScan()这个注解
添加MapperScan注解。指定mapper扫描路径。指定后就不要在mapper层写@Mapper注解了
@MapperScan("com.example.demo.mapper")
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
springboot整合MybatisPlus一个小项目
springboot整合MybatisPlus一个小项目:传送门
https://gitee.com/liu_fuhao/springboot_mybatisplus.git
springboot整合MybatisPlus使用oracle数据连接
编写自动代码生成类
public class MybatisPlusGenerator {
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@10.98.189.174:1521:orcl";
String username = "test";
String password = "1111111111";
//表名集合
List<String> tables = new ArrayList<>();
tables.add("CUX_KS_COMPANY_REVENUE");
tables.add("CUX_KS_ROLE");
tables.add("CUX_KS_USER_ROLE_INCOMETYPE_COMPANY");
//添加要忽略表中的字段
String[] strings = new String[]{
"REQUEST_ID",
"PROGRAM_UPDATE_DATE",
"PROGRAM_APPLICATION_ID",
"OBJECT_VERSION_NUMBER",
"PROGRAM_ID",
"CREATED_BY",
"CREATION_DATE",
"LAST_UPDATED_BY",
"LAST_UPDATE_DATE",
"LAST_UPDATE_LOGIN",
"ATTRIBUTE_CATEGORY",
"ATTRIBUTE1",
"ATTRIBUTE2",
"ATTRIBUTE3",
"ATTRIBUTE4",
"ATTRIBUTE5",
"ATTRIBUTE6",
"ATTRIBUTE7",
"ATTRIBUTE8",
"ATTRIBUTE9",
"ATTRIBUTE10",
"ATTRIBUTE11",
"ATTRIBUTE12",
"ATTRIBUTE13",
"ATTRIBUTE14",
"ATTRIBUTE15"
};
DataSourceConfig.Builder builder1 = new DataSourceConfig.Builder(url, username, password);
//创建数据库中类型到Java实体类中的数据类型的对应关系
builder1.typeConvert(new ITypeConvert() {
@Override
public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
String t = fieldType.toLowerCase();
//这里是把数据库中datetime的类型变成Java的data类型的数据
if(t.contains("datetime")){
return DbColumnType.DATE;
}
//这里是把数据库中number的类型变成Java的long类型的数据
if(t.contains("number")){
return DbColumnType.LONG;
}
//其它字段采用默认转换(非mysql数据库可以使用其它默认的数据库转换器)
return new MySqlTypeConvert().processTypeConvert(globalConfig,fieldType);
}
}
);
FastAutoGenerator.create(builder1)
//全局配置
.globalConfig(builder -> {
builder.fileOverride() // 开启覆盖之前生成的文件
.disableOpenDir() //禁止打开输出目录
.outputDir(System.getProperty("user.dir") + "\\src\\main\\java") //指定输出目录
.author("lfh") //作者名
// .enableKotlin() //开启 kotlin 模式
// .enableSwagger() //开启 swagger 模式
.dateType(DateType.TIME_PACK) //时间策略
.commentDate("yyyy-MM-dd"); //注释日期
})
//包配置
.packageConfig(builder -> {
builder.parent("com.example.springboot2test") //父包名
.entity("bean") //Entity 包名
.service("service") // Service 包名
.serviceImpl("service.impl") //Service Impl 包名
.mapper("mapper") //Mapper 包名
.xml("mapper.xml") // Mapper XML 包名
.controller("controller") //Controller 包名
.other("config") //自定义文件包名 输出自定义文件时所用到的包名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));//指定xml位置
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude(tables)
.addTablePrefix("CUX_KS_")//表名前缀,配置后生成的代码不会有此前缀
.serviceBuilder()
.formatServiceFileName("%sService")//服务层接口名后缀
.formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
.entityBuilder()
.enableLombok()//实体类使用lombok,需要自己引入依赖
//.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
.enableTableFieldAnnotation()//加上字段注解@TableField
.controllerBuilder()
.formatFileName("%sController")//控制类名称后缀
.enableRestStyle()
.mapperBuilder()
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper")
.entityBuilder()
.addIgnoreColumns(strings);//添加要忽略的数据库中列
})
.execute();
}
}
需要导入的pom文件有:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- http://mvnrepository.com/artifact/com.oracle/ojdbc14 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.1.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
连接条件
server.port=8888
spring.datasource.url=jdbc:oracle:thin:@ip地址:1521:服务名
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=用户名
spring.datasource.password=密码
#查看SQL日志
logging.level.com.example.springboot2test.mapper=debug
注意
在Spring Boot项目中,spring-boot-starter-parent 版本和 mybatis-plus 版本的选择需要考虑兼容性问题。以下是一些常见版本的对应关系,以及如何在 pom.xml 中配置它们。
常见版本对应关系
Spring Boot 版本 | MyBatis-Plus 版本 |
---|---|
2.7.x | 3.5.x |
2.6.x | 3.4.x |
2.5.x | 3.4.x |
2.4.x | 3.4.x |
2.3.x | 3.3.x |
2.2.x | 3.3.x |
2.1.x | 3.1.x |