为什么我在com.baomidou.mybatisplus.core.mapper中的BaseMapper类中找到的T selectById(Serializable id);没有具体实现
时间: 2024-09-28 21:06:37 浏览: 20
`BaseMapper` 是 MyBatis-Plus 中的一个通用 Mapper 接口模板,它提供了一些基础的方法声明,如 `selectById()` 和 `insert()`, 等等,但并未包含具体的实现代码。这个接口的设计理念是为了让开发者能够复用已有的通用查询逻辑,而将业务特定的操作留给具体的子类去实现。
当你在 `BaseMapper<T>` 类中看到 `T selectById(Serializable id)` 这样的方法,T 是泛型,表示映射的对象类型,比如 User、Article 等。开发者需要在自定义的实体类对应的 Mapper 接口中(例如 UserMapper 或 ArticleMapper),对 `selectById()` 进行具体实现,例如:
```java
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Serializable id);
}
```
在这个例子中,`UserMapper` 实现了从数据库中通过 ID 查询用户的功能,并提供了 SQL 语句。`BaseMapper` 提供了框架结构,子类负责填充实际数据访问逻辑。
相关问题
com.baomidou.mybatisplus.core.mapper.BaseMapper与com.baomidou.mybatisplus.mapper.BaseMapper的区别
根据提供的引用内容,可以看出这两个类的区别在于它们的包路径不同。其中,com.baomidou.mybatisplus.core.mapper.BaseMapper是MyBatis-Plus 3.x版本中的Mapper接口,而com.baomidou.mybatisplus.mapper.BaseMapper是MyBatis-Plus 2.x版本中的Mapper接口。在MyBatis-Plus 3.x版本中,com.baomidou.mybatisplus.core.mapper.BaseMapper是com.baomidou.mybatisplus.mapper.BaseMapper的升级版,提供了更多的功能和优化。
com.baomidou.mybatisplus.core.mapper.BaseMapper#selectByMap
这是一个 MyBatis-Plus 的 BaseMapper 接口中的方法,用于根据 Map 中的条件查询数据。具体来说,它会根据传入的 Map 中的键值对作为查询条件,生成对应的 SQL 语句,并返回符合条件的结果集。
该方法定义如下:
```java
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
```
其中,`T` 表示实体类,`columnMap` 表示查询条件的 Map 对象,键为数据库中的列名,值为对应列名的值。方法返回符合条件的结果集。
例如,如果要查询 `user` 表中 `age` 大于 18 且 `gender` 为 1 的所有记录,可以这样使用该方法:
```java
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("age", 18);
columnMap.put("gender", 1);
List<User> userList = userMapper.selectByMap(columnMap);
```