mybatis-plus 官方文档
mybatis-plus 配置文档
1.添加pom引用
maven的引用很简单,官方已经给出starter,不需要我们考虑它的依赖关系了,此处使用的是2.1.1和3.3.2,版本号要对应,否则会报错。
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency>
2.配置
#mybatis-plus
# xml扫描:多个以逗号或者分好分隔
mybatis-plus.mapper-locations=classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml
# 实体类扫描:多个以逗号或者分好分隔
mybatis-plus.type-aliases-package=com.microplay.*.entity,com.microplay.*.*.entity
mybatis-plus.configuration.auto-mapping-behavior: full
# 是否开启自动驼峰命名规则
mybatis-plus.configuration.map-underscore-to-camel-case: true
mybatis-plus.configuration.log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 数据库配置
# 驼峰下划线转换
mybatis-plus.configuration.db-config.column-underline: true
# 数据库大写下划线转换
mybatis-plus.configuration.db-config.capital-mode: true
# 逻辑删除前
mybatis-plus.configuration.db-config.logic-not-delete-value: 1
# 逻辑删除后
mybatis-plus.configuration.db-config.logic-delete-value: 0
注意事项:
需要更改的地方有:文件输出路径(根据项目需要定制),数据源(此类是单独的数据库反向生成代码执行文件,因此springboot的数据源不起作用),包配置,以及一些基本的生成策略;
官方已经提供了基于springboot的配置,将其拷贝过来放在application.yml中即可使用,此处只是将官方部分的配置删减过一些。其中column-underline: true特别好用,会自动将下划线格式的表字段,转换为以驼峰格式命名的属性。
# mybatis-plus mybatis-plus: # xml扫描:多个以逗号或者分好分隔 mapper-locations: classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml # 实体类扫描:多个以逗号或者分好分隔 type-aliases-package: com.microplay.*.entity,com.microplay.*.*.entity global-config: db-config: id-type: auto field-strategy: not_empty #驼峰下划线转换 column-underline: true #逻辑删除配置 logic-delete-value: 0 logic-not-delete-value: 1 db-type: mysql refresh: false configuration: cache-enabled: false auto-mapping-behavior: full # 是否开启自动驼峰命名规则 map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 数据库配置 # 驼峰下划线转换 db-config.column-underline: true # 数据库大写下划线转换 db-config.capital-mode: true # 逻辑删除前 db-config.logic-not-delete-value: 1 # 逻辑删除后 db-config.logic-delete-value: 0
注意!!!生成后一定记得在spring boot项目中添加mybatis的包扫描路径,或@Mapper注解:
@SpringBootApplication @MapperScan("com.XXX.XXX.mapper") // 这里需要根据项目报名配置 public class SpringBootMybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(SpringBootMybatisPlusApplication.class, args); } }
@Mapper注解:
@Mapper public interface UserMapper extends BaseMapper<User> { }
否则会报:Error creating bean with name 'xxxServiceImpl': Unsatisfied dependency expressed through field 'baseMapper';
至此,我们的底层增删改查操作全部完毕!下面来编写简单的controller来测试效果。
3.mybatis-plus分页(可选)
1.添加配置文件,此处配置文件表示开启mybatis-plus分页功能
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
或者:
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * Mybatis-Plus 分页配置 * 启动类和配置类只需配置一个 @MapperScan */ @Configuration @EnableTransactionManagement public class MybatisConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false paginationInterceptor.setOverflow(true); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setLimit(1000); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }
4.代码测试
4.1 controller:
import com.example.model.auto.User; import com.example.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private IUserService userService;
@PostMapping("/getUser") public User getUser(){ return userService.getById(1); } }
4.2 IUserService:
import com.baomidou.mybatisplus.extension.service.IService; import com.example.model.auto.User;
public interface IUserService extends IService<User> { }
4.3 UseServiceImpl:
import com.example.model.auto.User; import com.example.mapper.auto.UserMapper; import com.example.service.IUserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { @Autowired private UserMapper userMapper; }
4.4 UserMapper:
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.model.auto.User; public interface UserMapper extends BaseMapper<User> { }
4.4 在resources目录下新建mapper文件夹,新建UserMapper.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.XXX.XXX.UserMapper"> </mapper>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本