接口 BaseMapper<T>
mapper 的基础增删查改
- 作者:
- lingkang Created by 2024/3/11
-
方法概要
修饰符和类型方法说明createQuery(Query query) 创建查询,例如:intdeleteById(Object id) 根据主键id删除intdeleteByQuery(Query query) 根据查询条件删除数据,可以针对无id对象实体类intdeleteInIds(Collection<?> ids) 根据主键id删除多行数据booleanexistsByEntity(T entity) 根据实体对象,判断是否存在,实体对象必须存在@Id主键booleanexistsById(Object id) 判断是否存在booleanexistsByQuery(Query query) 根据条件查询数据是否存在,可以针对无id对象实体类int插入数据intinsertBatch(Collection<T> list) 批量插入数据,例如default intinsertOrUpdate(T entity) 插入或更新数据,不存在时插入,存在时更新查询所有,没有结果时返回空 ListselectById(Object id) 根据id查询selectByQuery(Query query) 查询表,根据条件selectByQueryOne(Query query) 在分页中使用此方法将会报错<E> List<E> selectColumn(QueryColumn query) 查询指定列,并返回指定结果,例如:<E> EselectColumnOne(QueryColumn query) 查询指定列,并返回一行结果;若返回多个结果时,将会报错;在分页中使用此方法将会报错long查询表数据总行数longselectCountByQuery(Query query) 根据条件查询查询总数,可以针对无id对象实体类selectInIds(Collection<?> ids) 根据id集合in查询intupdateByColumn(UpdateColumn updateColumn) 更新指定列,也能影响AutoUpdateTime注解字段intupdateById(T entity) 根据id进行更新intupdateByQuery(T entity, Query query) 根据条件更新对象,可以针对无id对象实体类
-
方法详细资料
-
selectAll
查询所有,没有结果时返回空 List -
selectById
根据id查询- 参数:
id- 主键id,id的值,并非entity实体对象,例如 int、String、Date等类型值- 返回:
- 实体对象
-
selectInIds
@Select("magic_base_selectInIds") @Lang(BaseMapperDriver.class) List<T> selectInIds(@Param("id3") Collection<?> ids) 根据id集合in查询List<UserEntity> selectByIds = mapper.selectInIds(Arrays.asList("1", "19951219")); log.info("selectByIds: {}", selectByIds);- 参数:
ids- id数组,并非entity实体对象,参入应该是 int、String、Date等类型数组值- 返回:
- 实体对象
- 从以下版本开始:
- 1.1.0
-
selectByQuery
@Select("magic_base_selectByQuery") @Lang(BaseMapperDriver.class) List<T> selectByQuery(@Param("q") Query query) 查询表,根据条件UserMapper mapper = mapperManage.getMapper(UserMapper.class); List<UserEntity> list = mapper.selectByQuery(new Query().gt("id", 1)); // 大于 > System.out.println("selectByQuery: " + list); list = mapper.selectByQuery(new Query().le("id", 1)); // 小于等于 <= System.out.println("selectByQuery: " + list);- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- List
,没有结果时返回空 List - 从以下版本开始:
- 1.1.0
-
selectByQueryOne
@Select("magic_base_selectByQueryOne") @Lang(BaseMapperDriver.class) T selectByQueryOne(@Param("q") Query query) 在分页中使用此方法将会报错// 若返回多个结果会报错,所以添加 limit 1 entity = mapper.selectByQueryOne(new Query().gt("id", 1).sql("limit 1")); // 大于 > log.info("selectByQueryOne: {}", entity);- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- 结果的实体对象
- 从以下版本开始:
- 1.1.0
-
selectCount
查询表数据总行数- 返回:
- 总行数
-
selectCountByQuery
@Select("magic_base_selectCountByQuery") @Lang(BaseMapperDriver.class) long selectCountByQuery(@Param("q") Query query) 根据条件查询查询总数,可以针对无id对象实体类UserMapper mapper = mapperManage.getMapper(UserMapper.class); long total = mapper.selectCountByQuery(new Query().gt("id", 1)); // 大于 > log.info("total: {}", total); total = mapper.selectCountByQuery(new Query().le("id", 1)); // 小于等于 <= log.info("total: {}", total);- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- count总数,必定是long型
- 从以下版本开始:
- 1.1.0
-
selectColumn
@Select("magic_base_selectColumn") @Lang(BaseMapperDriver.class) <E> List<E> selectColumn(@Param("q2") QueryColumn query) 查询指定列,并返回指定结果,例如:UserMapper userMapper = mapperManage.getMapper(UserMapper.class); List<Long> list = userMapper.selectColumn( new QueryColumn(Long.class, "id") .gt("id", 1) // 大于1 的id列 );- 类型参数:
E- 结果对象类- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- 结果列表
-
selectColumnOne
@Select("magic_base_selectColumnOne") @Lang(BaseMapperDriver.class) <E> E selectColumnOne(@Param("q2") QueryColumn query) 查询指定列,并返回一行结果;若返回多个结果时,将会报错;在分页中使用此方法将会报错Long result = userMapper.selectColumnOne( new QueryColumn(Long.class, "id").sql("limit 1"));- 类型参数:
E- 结果对象类- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- 结果对象,结果是多行时抛出异常:
TooManyResultsException
-
existsById
@Select("magic_base_existsById") @Lang(BaseMapperDriver.class) boolean existsById(@Param("id") Object id) 判断是否存在- 参数:
id- 主键id,id的值,并非entity实体对象,例如 int、String、Date等类型值- 返回:
- true:存在;false:不存在
-
existsByEntity
@Select("magic_base_existsByEntity") @Lang(BaseMapperDriver.class) boolean existsByEntity(@Param("id2") T entity) 根据实体对象,判断是否存在,实体对象必须存在@Id主键UserEntity entity = new UserEntity(); entity.setId(1L); boolean exists = userMapper.existsByEntity(entity); System.out.println("存在:" + exists);- 参数:
entity- 实体对象- 返回:
- true:存在;false:不存在
- 从以下版本开始:
- 1.1.0
-
existsByQuery
@Select("magic_base_existsByQuery") @Lang(BaseMapperDriver.class) boolean existsByQuery(@Param("q") Query query) 根据条件查询数据是否存在,可以针对无id对象实体类UserMapper mapper = mapperManage.getMapper(UserMapper.class); boolean has = mapper.existsByQuery(new Query().eq("id", 1)); System.out.println("exists: " + has);- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- 存在:true;不存在:false
- 从以下版本开始:
- 1.1.0
-
createQuery
@Select("magic_base_createQuery") @Lang(BaseMapperDriver.class) List<T> createQuery(@Param("q") Query query) 创建查询,例如:// 查询id为 1 的实体对象 List<UserEntity> list = mapper.createQuery(new Query().eq("id", 1))- 参数:
query- 查询条件,比较符可以参考:Condition- 返回:
- 结果列表
-
insert
@Insert("magic_base_insert") @Lang(BaseMapperDriver.class) @Options(useGeneratedKeys=true) int insert(@Param("e") T entity) 插入数据- 参数:
entity- 实体对象- 返回:
- 受影响的行数
-
insertBatch
@Insert("magic_base_insertBatch") @Lang(BaseMapperDriver.class) @Options(useGeneratedKeys=true) int insertBatch(@Param("list") Collection<T> list) 批量插入数据,例如List<UserEntity> list = new ArrayList<>(); UserEntity user = new UserEntity(); user.setId(System.currentTimeMillis()); UserEntity user1 = new UserEntity(); user1.setId(System.currentTimeMillis() + 1); list.add(user); list.add(user1); UserMapper mapper = mapperManage.getMapper(UserMapper.class); int insertBatch = mapper.insertBatch(list); log.info("insertBatch list: {}", list); log.info("insertBatch {}", insertBatch);- 参数:
list- 实体对象列表- 返回:
- 受影响的行数
-
updateById
根据id进行更新- 参数:
entity- 实体对象- 返回:
- 受影响的行数
-
updateByQuery
@Update("magic_base_updateByQuery") @Lang(BaseMapperDriver.class) int updateByQuery(@Param("e") T entity, @Param("q") Query query) 根据条件更新对象,可以针对无id对象实体类UserMapper userMapper = mapperManage.getMapper(UserMapper.class); List<UserEntity> list = userMapper.selectAll(); log.info("list: {}", list); UserEntity user = list.get(0); user.setUsername("lk"); user.setPassword("updateByQuery"); user.setNickname("update"); int count = userMapper.updateByQuery(user, new Query().eq("id", user.getId())); log.info("count: {}", count); list = userMapper.selectAll(); log.info("list: {}", list);- 参数:
entity- 实体对象query- 条件,比较符可以参考:Condition- 返回:
- 受影响的行数
- 从以下版本开始:
- 1.1.0
-
updateByColumn
@Update("magic_base_updateByColumn") @Lang(BaseMapperDriver.class) int updateByColumn(@Param("q2") UpdateColumn updateColumn) 更新指定列,也能影响AutoUpdateTime注解字段int i = userMapper.updateByColumn( new UpdateColumn().set("id", 66).eq("id", 1) ); System.out.println("受影响的行:" + i);- 参数:
updateColumn- 要更新的指定列,必须带上条件,因为不能调用此接口进行全量更新。 全量更新时应该调用MapperManage.createUpdate(java.lang.String)- 返回:
- 受影响的行数
- 从以下版本开始:
- 1.1.0
-
deleteById
@Delete("magic_base_deleteById") @Lang(BaseMapperDriver.class) int deleteById(@Param("id") Object id) 根据主键id删除- 参数:
id- 主键id、实体对象类- 返回:
- 受影响的行数
-
deleteInIds
@Delete("magic_base_deleteInIds") @Lang(BaseMapperDriver.class) int deleteInIds(@Param("id2") Collection<?> ids) 根据主键id删除多行数据int deleteInIds = userMapper.deleteInIds(Arrays.asList("1", "19951219")); log.info("deleteInIds: {}", deleteInIds);- 参数:
ids- id数组,并非entity实体对象,参入应该是 int、String、Date等类型数组值- 返回:
- 受影响的行数
- 从以下版本开始:
- 1.1.0
-
deleteByQuery
@Delete("magic_base_deleteByQuery") @Lang(BaseMapperDriver.class) int deleteByQuery(@Param("q") Query query) 根据查询条件删除数据,可以针对无id对象实体类UserMapper mapper = mapperManage.getMapper(UserMapper.class); int count = mapper.deleteByQuery(new Query().eq("id", 1)); System.out.println(count);- 参数:
query- 删除条件,比较符可以参考:Condition- 返回:
- 受影响的行数
- 从以下版本开始:
- 1.1.0
-
insertOrUpdate
插入或更新数据,不存在时插入,存在时更新UserEntity entity = new UserEntity(); entity.setId(1234566L); int insert = userMapper.insertOrUpdate(entity); System.out.println("受影响的行:" + insert);- 参数:
entity- 实体对象- 返回:
- 受影响的行数
- 从以下版本开始:
- 1.1.0
-