当前位置: 首页 > news >正文

工程POM引入mybatis-plus-boot-starter后

一、配置 Mapper 扫描

在 Spring Boot 启动类上添加@MapperScan注解,指定 Mapper 接口所在的包路径:

java

import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.seazon.cloud.mapper") // 替换成你实际的 Mapper 包路径 public class DriverAnalysisApplication { public static void main(String[] args) { SpringApplication.run(DriverAnalysisApplication.class, args); } }

或者,你也可以在每个 Mapper 接口上单独使用@Mapper注解(不推荐,每个都要写,比较繁琐)。


二、编写 Entity 实体类

java

import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("driver_info") // 对应数据库表名 public class DriverInfo { @TableId(type = IdType.AUTO) // 主键,自增策略 private Long id; private String driverName; private String driverNo; private Integer age; private LocalDateTime createTime; private LocalDateTime updateTime; }

常用注解说明:

注解作用
@TableName指定数据库表名
@TableId指定主键字段
@TableField指定字段映射(非主键)
@TableLogic逻辑删除字段

三、编写 Mapper 接口

java

import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import com.seazon.cloud.entity.DriverInfo; @Mapper public interface DriverInfoMapper extends BaseMapper<DriverInfo> { // 继承 BaseMapper 后,已经拥有了基础的 CRUD 方法: // insert、deleteById、updateById、selectById、selectList 等 // 如果有自定义复杂查询,可以在这里写方法,并配合 XML 或注解实现 // 例如: // @Select("SELECT * FROM driver_info WHERE driver_no = #{driverNo}") // DriverInfo selectByDriverNo(String driverNo); }

BaseMapper提供了哪些方法:

方法作用
insert(T entity)插入一条记录
deleteById(Serializable id)根据 ID 删除
updateById(T entity)根据 ID 更新
selectById(Serializable id)根据 ID 查询
selectList(Wrapper<T> queryWrapper)条件查询列表
selectPage(IPage<T> page, Wrapper<T> queryWrapper)分页查询

四、Service 层使用

方式一:直接注入 Mapper(简单场景)

java

import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.seazon.cloud.mapper.DriverInfoMapper; import com.seazon.cloud.entity.DriverInfo; @Service public class DriverService { @Autowired private DriverInfoMapper driverInfoMapper; public DriverInfo getDriverById(Long id) { return driverInfoMapper.selectById(id); } public boolean saveDriver(DriverInfo driver) { return driverInfoMapper.insert(driver) > 0; } }
方式二:使用 MyBatis-Plus 的 Service 封装(推荐)

MyBatis-Plus 提供了更强大的 Service 层封装,支持更多高级功能。

1. 定义 Service 接口:

java

import com.baomidou.mybatisplus.extension.service.IService; import com.seazon.cloud.entity.DriverInfo; public interface IDriverService extends IService<DriverInfo> { // 可以在这里定义额外的业务方法 DriverInfo getByDriverNo(String driverNo); }

2. 实现 Service 接口:

java

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import com.seazon.cloud.mapper.DriverInfoMapper; import com.seazon.cloud.entity.DriverInfo; @Service public class DriverServiceImpl extends ServiceImpl<DriverInfoMapper, DriverInfo> implements IDriverService { @Override public DriverInfo getByDriverNo(String driverNo) { // 使用 QueryWrapper 构造查询条件 return this.lambdaQuery() .eq(DriverInfo::getDriverNo, driverNo) .one(); } }

3. 在 Controller 或其他地方使用 Service:

java

@RestController @RequestMapping("/api/driver") public class DriverController { @Autowired private IDriverService driverService; @GetMapping("/{id}") public DriverInfo getDriver(@PathVariable Long id) { return driverService.getById(id); } @PostMapping public boolean saveDriver(@RequestBody DriverInfo driver) { return driverService.save(driver); } }

五、MyBatis-Plus 常用查询示例

java

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 1. 简单条件查询 LambdaQueryWrapper<DriverInfo> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DriverInfo::getAge, 25) .like(DriverInfo::getDriverName, "张"); List<DriverInfo> list = driverInfoMapper.selectList(wrapper); // 2. 分页查询 Page<DriverInfo> page = new Page<>(1, 10); // 第1页,每页10条 IPage<DriverInfo> result = driverInfoMapper.selectPage(page, null); // 3. 多条件查询 LambdaQueryWrapper<DriverInfo> wrapper = new LambdaQueryWrapper<>(); wrapper.between(DriverInfo::getAge, 20, 30) .orderByDesc(DriverInfo::getCreateTime); List<DriverInfo> list = driverInfoMapper.selectList(wrapper);

六、配置 MyBatis-Plus(可选)

application.ymlapplication.properties中添加配置:

yaml

mybatis-plus: # 实体类扫描包(可以不用写,因为 @TableName 已经指定了表名) # type-aliases-package: com.seazon.cloud.entity # Mapper XML 文件位置(如果使用 XML 方式) mapper-locations: classpath:mapper/*.xml # 全局配置 global-config: db-config: # 逻辑删除字段名 logic-delete-field: deleted # 逻辑删除值(已删除) logic-delete-value: 1 # 逻辑未删除值(未删除) logic-not-delete-value: 0 # 主键类型:自增 id-type: auto configuration: # 开启驼峰命名转换 map-underscore-to-camel-case: true # 开启 SQL 日志(开发环境方便调试) log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

七、验证是否生效

  1. 启动项目,观察日志中是否有 MyBatis-Plus 相关的初始化信息。

  2. 写一个简单的测试接口或单元测试,调用 Mapper 或 Service 方法,确认能正常操作数据库。

java

@SpringBootTest public class DriverTest { @Autowired private DriverInfoMapper driverInfoMapper; @Test public void testSelect() { List<DriverInfo> list = driverInfoMapper.selectList(null); System.out.println("数据条数:" + list.size()); } }

总结

步骤关键操作
1在启动类添加@MapperScan
2编写 Entity,使用@TableName@TableId等注解
3编写 Mapper 接口,继承BaseMapper<T>
4在 Service 中注入 Mapper 或继承ServiceImpl
5(可选)在application.yml中配置 MyBatis-Plus

按照以上步骤操作后,MyBatis-Plus 就能在你的项目中正常工作了。

http://www.jsqmd.com/news/1245556/

相关文章:

  • 限时解密:米其林星厨合作AI摄影工作流(含自定义食材材质库+环境光模拟器),仅开放前500份完整配置包
  • 2026年7月亲身到店体验烟台亨得利名表服务中心|电话及详细网点地址 - 亨得利官方博客
  • 劳力士服务项目及价格查询|详细地址与维修热线权威信息通告(2026年7月最新) - 劳力士服务中心
  • 2026年7月太仓市打井多少钱一米?娄江之畔家用井降水井环境监测井全类型服务指南 - 瑞溪泉水利
  • Amphenol ICC ND9ACL2B0A线束组件产品特点分析
  • KVM虚拟化平台部署与优化实战指南
  • 2026 年至今,大武口热门的膜结构充电桩停车棚哪家合适平台综合实力解析,避坑指南:膜结构充电桩停车棚如何选对?-豪睿膜结构 - 行业鉴选官
  • 上海亨得利手表维修地址 售后保养服务网点权威公示(2026年7月最新) - 亨得利官方
  • 前端工程师为何要学Python?提升效率的实战指南
  • C++格式化输出全解析:从printf到iostream,打造专业数据展示
  • ARM Cortex-M系统控制模块:时钟、电源与低功耗管理实战详解
  • 开源AI实战指南:从技术原理到本地知识问答系统构建
  • 2026年7月目前优秀的黑色阳极氧化源头厂家推荐,当下黑色阳极氧化供应商,耐磨抗刮使用寿命长久 - 品牌推荐师
  • ChatGPT付款成功为什么还是Free?先排查这5个地方
  • Windows硬件信息修改工具原理与开发指南
  • 毕业设计 深度学习昆虫识别系统(源码+论文)
  • Python Pygame五子棋实战:抗锯齿绘制与高效胜负判断算法详解
  • Sub2API:开源AI API共享网关解决方案
  • C++十六进制输出全解析:从流操纵符到内存调试实战
  • 速冻海鲜丸子哪家靠谱:深鲜季锁鲜保鲜 - 晚香时候
  • 亲身到店体验泉州亨得利名表服务中心|详细网点地址及热线(2026年7月更新) - 亨得利官方
  • 工业视觉镜头核心参数全解 | 精准选型规避成像缺陷、提升检测精度、适配多场景机器视觉项目落地
  • 肌电数据处理实战06:膝关节康复动作的真实 sEMG 姿态评估
  • Python深度学习开发指南:从入门到实战
  • 西安各区小升初语文、数学、英语真题及答案解析
  • OpenLDAP服务器搭建与优化实战指南
  • 近期AI检查量化表达,先让交易规则说得清
  • PyCharm脱机连接Oracle数据库实战指南
  • SM2双证书与P10请求全解析:从原理到国密集成实战
  • 2026年7月最新宝玑西安太白印象城维修保养服务电话 - 亨得利钟表维修中心