当前位置: 首页 > 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.lryc.cn/news/621711.html

相关文章:

  • Linux815 shell:while
  • 鸿蒙任务调度机制深度解析:优先级、时间片、多核与分布式的流畅秘密
  • 我的学习认知、高效方法与知识积累笔记
  • Ubuntu20.04下Px4使用UORB发布消息
  • 风场可视化 - 双分量数据
  • python30-正则表达式
  • Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
  • shell脚本实现sha256sum校验并拷贝校验通过的文件
  • 【Spring框架】SpringIOC
  • 代码随想录二刷之“字符串”~GO
  • 状态管理中应用进程和宿主进程的概念及相互关系
  • 初识CNN02——认识CNN2
  • Jeecg后端经验汇总
  • redis-sentinel基础概念及部署
  • JVM执行引擎深入理解
  • 异步开发:协程、线程、Unitask
  • 关于C++的#include的超超超详细讲解
  • LCR 076. 数组中的第 K 个最大元素
  • IStoreOS(OpenWrt)开启IPV6
  • 【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件
  • 10--C++模板参数与特化详解
  • Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱
  • 基于CodeBuddy的2D游戏开发实践:炫酷大便超人核心机制解析
  • 云手机存储和本地存储的区别
  • Ant-Design AUpload如何显示缩略图;自定义哪些类型的数据可以使用img预览
  • 用3D打印重新定义骑行-中科米堆CASAIM自行车座椅个性化设计
  • Spring Ai 如何配置以及如何搭建
  • Cursor CLI 技术解析:免费调用 GPT-5 的命令行方案
  • Flink的状态管理
  • 项目篇------------网页五子棋(知识预备)