接口 BaseMapper<T>


@Mapper @MagicMapper public interface BaseMapper<T>
mapper 的基础增删查改
作者:
lingkang Created by 2024/3/11
  • 方法详细资料

    • selectAll

      @Select("magic_base_selectAll") @Lang(BaseMapperDriver.class) List<T> selectAll()
      查询所有,没有结果时返回空 List
    • selectById

      @Select("magic_base_selectById") @Lang(BaseMapperDriver.class) T selectById(@Param("id") Object id)
      根据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

      @Select("magic_base_selectCount") @Lang(BaseMapperDriver.class) long 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

      @Update("magic_base_updateById") @Lang(BaseMapperDriver.class) int updateById(@Param("e") T entity)
      根据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

      default int insertOrUpdate(T entity)
      插入或更新数据,不存在时插入,存在时更新
       
        UserEntity entity = new UserEntity();
        entity.setId(1234566L);
        int insert = userMapper.insertOrUpdate(entity);
        System.out.println("受影响的行:" + insert);
       
       
      参数:
      entity - 实体对象
      返回:
      受影响的行数
      从以下版本开始:
      1.1.0