【问题标题】:Fastest way to see if a number is between two values查看一个数字是否在两个值之间的最快方法
【发布时间】:2019-02-25 09:53:51
【问题描述】:

我正在使用 Spring+JPA

我有一个包含 MIN_VALUE 和 MAX_VALUE 的表。

然后我有一个具有输入 VALUE 的服务。知道 VALUE 是否介于 MAX 和 MIN VALUES 之间的最快/更好的方法是什么?

@Autowired
private ValuesRepository valuesRepository;

public void calculateValue(double value) {
    List<Values> valuesList = valuesRepository.findAll();
    // ??
}

Edit Maybe 最好选择已经返回一行??

public interface ValuesRepository extends JpaRepository<Values, Long> {

    public Values // ??
}

【问题讨论】:

  • 您要检查单个值还是ValuesRepository.findAll()返回的列表中的所有值?
  • 您想要所有满足最大和最小条件的行吗?
  • 为框架查询或方法提供实体类
  • 如果可行的话,总是最好在服务器端进行过滤。在许多情况下,数据库甚至不必从磁盘加载记录。

标签: java spring


【解决方案1】:
findReferenceFieldBetween(value1,value2);

假设您的参考字段是,那么,

findByValueBetween(Your Max Value, Your Min Value)

更多详情请参考Query with Jpa

【讨论】:

    【解决方案2】:

    您可以在 JPA 中使用 GreaterThan 和 LessThan 来检查两个不同字段之间的值

    不包括边界:-

    public T findOneBySinceGreaterThanAndUntilLessThan(Long since, Long until);
    

    包括边界:-

    public T findOneBySinceGreaterThanEqualAndUntilLessThanEqual(Long since, Long until);
    

    参考文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

    【讨论】:

    • Spring Data 确实支持Between
    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2021-11-03
    • 2016-08-02
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多