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

【解决笔记】MyBatis-Plus 中无 selectList 方法

MyBatis-Plus 中无 selectList 方法的解决笔记

核心前提

MyBatis-Plus 的 BaseMapper 接口内置了 selectList 等基础查询方法,继承该接口可直接使用,无需手动实现。

无 selectList 方法的两种情况及解决方式

1. 未继承 BaseMapper(推荐方案)

让 Mapper 接口继承 BaseMapper<T>(T 为实体类),即可直接获得 selectList 等基础方法:

// 示例:UserMapper 继承 BaseMapper<User>
public interface UserMapper extends BaseMapper<User> {// 无需手动定义 selectList,BaseMapper 已包含
}// 使用方式
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三");
List<User> users = userMapper.selectList(wrapper); // 直接调用

2. 无法继承 BaseMapper(特殊场景,需自定义方法)

步骤1:在 Mapper 接口中定义方法
public interface UserMapper {// 自定义查询方法,参数为 LambdaQueryWrapperList<User> findUsers(LambdaQueryWrapper<User> wrapper);
}
步骤2:编写 SQL 实现(两种方式)
  • XML 映射文件方式

    <!-- UserMapper.xml -->
    <select id="findUsers" resultType="com.example.entity.User">SELECT * FROM user<!-- 引入 LambdaQueryWrapper 生成的条件片段 -->${wrapper.getSqlSegment()}
    </select>
    
  • 注解方式

    public interface UserMapper {@Select("SELECT * FROM user ${wrapper.getSqlSegment()}")List<User> findUsers(LambdaQueryWrapper<User> wrapper);
    }
    
步骤3:调用自定义方法
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三");
List<User> users = userMapper.findUsers(wrapper); // 调用自定义方法

注意事项

  1. 优先选择继承 BaseMapper,这是 MyBatis-Plus 的核心特性,可大幅简化开发。
  2. 自定义方法时,通过 ${wrapper.getSqlSegment()} 引入查询条件,MyBatis-Plus 已对 SQL 注入做了防护。
  3. 若需灵活控制查询字段,可在 SQL 中指定具体列(如 SELECT id, name FROM user),避免查询冗余字段。
http://www.dtcms.com/a/332534.html

相关文章:

  • 【详细操作指南】如何将 Moodle 与编辑器连接,以修改文档、检查和批改作业等
  • JavaScript 核心基础:类型检测、DOM 操作与事件处理
  • 8.15 机器学习(2)K最近邻算法
  • Chrome插件开发【Tabs】
  • 基于vue和nodejs的茶叶销售平台的设计与实现/基于express的茶叶商城系统
  • 从 LLM 到自主 Agent:OpenCSG 打造开源 AgenticOps 生态
  • 从CAD数据访问到3D协作,HOOPS SDK如何提升PLM解决方案竞争力?
  • PCA降维全解析:从原理到实战
  • p5.js 3D盒子的基础用法
  • [TG开发]照片机器人
  • 云手机选哪个比较好用?
  • 【Docker】关于hub.docker.com,无法打开,国内使用dockers.xuanyuan.me搜索容器镜像、查看容器镜像的使用文档
  • 腾讯云开发小程序工具箱使用心得
  • Docker Compose 入门教程
  • Linux————网络基础
  • LPDDR5训练过程
  • 一、Docker本地安装
  • Kafka分区
  • 实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
  • 10--C++模板参数与特化详解
  • 【用软件方法实现临界区互斥】
  • Java 正则表达式的使用方法
  • 力扣326:3的幂
  • NLP数据增强方法及实现-A
  • 【R语言】R 语言中 gsub 与正则表达式详解(含 POSIX 与 Perl 风格实例)
  • 深入解析Java代理模式:灵活控制对象访问的核心技术
  • 配置国内加速源后仍然无法拉取镜像
  • 第五天~提取Arxml中CAN波特率属性New_CanCluster--Standard
  • C++面试——内存
  • 【LeetCode 热题 100】45. 跳跃游戏 II