BaseMapper 中的方法:
插入
int insert(T entity)
- 插入一条记录。删除
int deleteById(Serializable id)
- 根据主键ID删除记录。
int deleteById(T entity)
- 根据实体对象(ID)删除记录。
int deleteByMap(Map<String, Object> columnMap)
- 根据列名-值对的条件删除记录。
int delete(Wrapper<T> queryWrapper)
- 根据条件对象删除记录。
int deleteBatchIds(Collection<?> idList)
- 批量删除记录,根据主键ID列表或实体列表。更新
int updateById(T entity)
- 根据主键ID更新记录。
int update(T entity, Wrapper<T> updateWrapper)
- 根据条件对象更新记录。查询
T selectById(Serializable id)
- 根据主键ID查询一条记录。
List<T> selectBatchIds(Collection<? extends Serializable> idList)
- 根据主键ID列表批量查询记录。
List<T> selectByMap(Map<String, Object> columnMap)
- 根据列名-值对的条件查询记录。
T selectOne(Wrapper<T> queryWrapper)
- 根据条件对象查询一条记录。
Long selectCount(Wrapper<T> queryWrapper)
- 根据条件对象查询总记录数。
List<T> selectList(Wrapper<T> queryWrapper)
- 根据条件对象查询全部记录。
List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper)
- 根据条件对象查询全部记录,并返回Map列表。
List<Object> selectObjs(Wrapper<T> queryWrapper)
- 根据条件对象查询全部记录,并只返回第一个字段的值。
<P extends IPage<T>> P selectPage(P page, Wrapper<T> queryWrapper)
- 根据条件对象分页查询记录。
<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, Wrapper<T> queryWrapper)
- 根据条件对象分页查询记录,并返回Map列表。
boolean exists(Wrapper<T> queryWrapper)
- 根据条件对象判断是否存在记录。
这四个查询方法分别提供了不同的查询策略:
selectById(Serializable id)
: 这个方法是基于主键 ID 来查询单条记录。传入一个序列化的 ID,如果存在匹配的记录,就返回该记录的实体对象;如果没有匹配的记录,则返回null
。
selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList)
: 这个方法是基于主键 ID 列表来批量查询记录。传入一个包含序列化的 ID 的集合,返回一个列表,包含与 ID 集合中所有 ID 匹配的记录的实体对象。如果没有匹配的记录,则返回空列表。
selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap)
: 这个方法是基于列的映射来查询记录。传入一个映射,其中键是列名,值是列的值,返回一个列表,包含与所有列映射匹配的记录的实体对象。如果没有匹配的记录,则返回空列表。《就是:一个传字段名,一个传值》
selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper)
: 这个方法是基于实体对象封装操作类来查询单条记录。传入一个Wrapper
,它封装了查询条件。如果查询结果有多条记录,会抛出异常;如果有一条记录,就返回该记录的实体对象;如果没有匹配的记录,则返回null
。
List<T> selectList(Wrapper<T> queryWrapper)
此方法返回一个实体对象的列表。每个实体对象代表查询结果中的一条记录,其中包含了该记录的所有字段。这个方法更适合于当你在应用程序中需要使用记录的所有信息时使用。
例如,如果你有一个
User
实体类,每个User
对象会包含id
、name
、selectList
会返回List<User>
,每个User
对象都代表查询结果中的一条用户记录。
List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper)
此方法返回一个 Map 的列表,每个 Map 代表查询结果中的一条记录,其中 Map 的键是字段名,值是字段的值。这个方法更适合于当你需要更灵活地处理查询结果时使用,比如需要转换成 JSON 或者其他数据结构。
例如,如果查询结果中包含
id
、name
、selectMaps
会返回如下结构的列表:[ {"id": 1, "name": "John", "email": "john@example.com"},{"id": 2, "name": "Jane", "email": "jane@example.com"}, // ... 其他记录 ]
选择依据:
- 如果你需要处理实体对象,并在应用程序中使用这些对象,那么
selectList
是更好的选择。- 如果你更倾向于处理原始数据,或者需要更灵活地处理查询结果(例如,转换字段名或值),那么
selectMaps
是更好的选择。