springboot中使用mybatis_plus逆向工程
创建springboot项目,选择图片中所示依赖
mybatis-plus生成的依赖
<!-- mybatis_plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
自动生成代码
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
/**
* 自动生成
*/
public class generate {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");//获取当前的路径
gc.setOutputDir(projectPath + "/src/main/java");//在当前路径上加上这个路径
gc.setAuthor("name");//添加作者信息
gc.setOpen(false);//是否打开资源管理器
gc.setFileOverride(false);//是否覆盖文件
gc.setServiceName("%sService");//去除服务接口service前缀
gc.setIdType(IdType.ID_WORKER);//使用默认主键
gc.setDateType(DateType.ONLY_DATE);//设置默认的时间格式
gc.setSwagger2(false); //实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);//把全局配置放入代码生成器中
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
//在这里需要改成你自己的数据库
dsc.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");//用户名
dsc.setPassword("root");//密码
dsc.setDbType(DbType.MYSQL);//设置默认类型
mpg.setDataSource(dsc);//将数据源配置放入代码生成器中
// 包配置
PackageConfig pc = new PackageConfig();
//这里需要设置自己的包路径名
pc.setModuleName("generate");//设置模块名
pc.setParent("com");//设置包名,这样com.zjh.mybatis
pc.setEntity("entity");//设置实体类的包名
pc.setMapper("mapper");//设置持久层的包名
pc.setService("service");//设置业务层的包名
pc.setController("controller");//设置表现层(控制层)的包名
mpg.setPackageInfo(pc);//将包的配置放入到自动代码生成器中
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("leader_schedule_main");//设置要包含生成的表,生成多个表以逗号相隔,例如strategy.setInclude("表1","表2");
strategy.setNaming(NamingStrategy.underline_to_camel);//设置驼峰命名的自动映射
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//设置列名的驼峰命名自动映射
strategy.setEntityLombokModel(true);//设置是否支持lombok
strategy.setRestControllerStyle(true);
strategy.setLogicDeleteFieldName("deleted");//自动配置逻辑删除字段
//自动填充配置
TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT);
//创建一个list集合,把两个自动填充策略加入到这个集合
ArrayList<TableFill> tableFill = new ArrayList<>();
tableFill.add(gmtCreate);
tableFill.add(gmtModified);
strategy.setTableFillList(tableFill);//把自动填充放入到配置策略
strategy.setVersionFieldName("version");//开启乐观锁
strategy.setRestControllerStyle(true);//配置restful的风格的驼峰命名
strategy.setControllerMappingHyphenStyle(true);//url多字段的/变成_下划线
mpg.setStrategy(strategy);//把所有策略放入自动代码生成器中
mpg.execute();//执行
}
}
配置文件
# 应用名称
spring.application.name=mybatis_plus
# 应用服务 WEB 访问端口
server.port=8080
**加不加都行,后面这些是使用生成文件对数据库操作的**
#配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
# mybatis_plus配置
# 当为true时:mybatis-plus会将Java对象的驼峰式命名的常量转成下划线的方式,再与数据库表列字段进行匹配,这样会造成错误。 此时需要利用@TableField注解指定常量在表中的列名。
# 当为false时:此时就需要数据库里每列都是下划线的命名方式。
mybatis-plus.configuration.map-underscore-to-camel-case=true
# autoMappingBehavior有三个属性(默认是PARTIAL)
# NONE:取消自动映射
# PARTIAL:只会自动映射,没有定义嵌套结果集映射的结果集
# FULL:会自动映射任意复杂的结果集(无论是否嵌套)
# 自动映射的时候sql语句的结果集字段是不区分大小写的,所以映射的pojo成员变量也不需要区分大小写,都可以映射到
mybatis-plus.configuration.auto-mapping-behavior=full
# mybatis-plus输出日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 配置mapper xml文件的路径(扫描mapper文件下的xml)因为导出的xml文件再 src/main/java/ 跟我们配置的扫描不匹配 所以把配置文件挪到,resources下
mybatis-plus.mapper-locations=classpath:xml/*.xml
springboot整合mybatis_plus经常遇见的错误
Invalid bound statement (not found)出现原因和解决方法
常见的错误如下:
1.mapper.xml中的namespace和实际的mapper文件位置不一致
2.mapper接口中的方法名和mapper.xml中的id标签不一致
3.可能没有构建到target中,如果不在可粘贴进去继续执行
添加以下代码到pom文件中,<build></build>中,这样就可以构建进去了
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)