你好!你好吗?

我很高兴宣布uaiCriteria的发布,EasyCriteria的演进。

确实需要更改框架名称吗? 是的,可悲的是。 我找到了另一个具有相同名称的框架 ,这就是为什么我决定更改名称的原因(我不希望有任何法律问题)。 该框架的区别在于,其他框架都可以使用MetaModel,而uaiCriteria可以使用字符串作为参数。


关于框架名称更改:

  • 您的代码可以在此新版本上正常使用,该代码是复古兼容的
  • 所有EasyCriteria类均以@Deprecated注释,并将在下一版本中删除。
  • 新类具有旧版本的所有方法。 如果要更改新代码,只需“ 替换 ”代码中的UaiCriteria文本EasyCriteria
  • 同样,我不想更改框架名称,但是我不想法律问题

框架现在有了吉祥物:

EasyCriteria已演变为uaiCriteria。 新名称和更多功能

吉祥物

新版本有很多新东西。 让我们先谈一下结构变化:

  • 该站点已更改,现在是http://uaicriteria.com
  • 存储库已经更改,现在在GIT上(很多开发者都要求) https://github.com/uaihebert/uaicriteria
  • SONAR插件已添加到pom.xml中,以帮助编写代码代码覆盖率和静态分析:


    EasyCriteria已演变为uaiCriteria。 新名称和更多功能

    科伯图拉大学

  • 旧站点将被停用,但是所有旧文档都已迁移。
  • 当前的API有一些条件限制,在条件中使用HAVING是不可能的。 我们将创建一个用于复杂条件的新接口/ API-我正在为新接口寻找新名称,您能建议我一个吗? (:

让我们谈谈新功能:

欢迎来到巴图

Batoo是EclipseLink或Hibernate之类的JPA提供程序。 在这个新版本中,我们使用Batoo测试了很多方法。

注意,我讲的是“很多方法”,但不是大多数方法。 不幸的是Batoo在JPQL和Criterias方面存在一些问题,我无法用它涵盖大多数方法。

uaiCriteria框架几乎支持EclipseLink,Hibernate和OpenJPA的所有方法。

多选

可以选择要返回的属性:

select
    p.name,
    p.age
from 
    Person p

如果我们在条件中转换上面的JPQL:

finalUaiCriteria<Person> uaicriteria =
    UaiCriteriaFactory.UaiCriteriaFactory.createMultiSelectCriteria(entityManager, Person.class);

uaiCriteria.addMultiSelectAttribute("name")
           .addMultiSelectAttribute("age");

finalList multiselectList = uaiCriteria.getMultiSelectResult();

有关上述代码的一些注意事项:

  • 如果仅选择一个属性,则将返回对象
  • 如果您选择多个属性,则将返回Object []
  • JPA提供程序可能返回Vector而不是Object [](在我的测试中,EclipseLink返回了Vector)

子查询

现在可以执行如下子查询:

select p from Person p 
where p.id in
        (select dog.person.id from Dog dog where dog.cute = true)

我不会谈论完成上面的JPQL所需的几行本地JPA标准,但是使用UaiCriteria非常容易做到:

final UaiCriteria<Person> uaiCriteria = UaiCriteriaFactory.createQueryCriteria(Person.class);
 
final UaiCriteria<Dog> subQuery = uaiCriteria.subQuery("person.id", Dog.class); // dog.person.id
 
subQuery.andEquals("cute", true);
 
uaiCriteria.andAttributeIn("id", subQuery); //person.id

您需要做的就是创建一个子查询来通知其返回值。 然后调用根条件的方法attributeIn。

MapIsEmpty [否]

isEmpty方法可用于地图:

uaiCriteria.andCollectionIsEmpty("ENTITY_MAP");

AttributeIn [NOT]

如果要验证值是否在JPQL之类的列表中,请执行以下操作:

select p
from Payment p
where
    p.statusEnum in :enumList

您可以像上面这样创建JPQL:

final UaiCriteria<Payment> uaiCriteria = 
    UaiCriteriaFactory.createQueryCriteria(Payment.class);
 
uaiCriteria.andAttributeIn("statusEnum", 
                           Arrays.asList(StatusEnum.VALUE_01, StatusEnum.VALUE_02));

该属性可以是枚举,整数,字符串等。

MemberOf [NOT]

下面的查询:

select d
from Departament d
where :person member of d.employeeList

可以这样创建:

final UaiCriteria<Departament> uaiCriteria = 
    UaiCriteriaFactory.createQueryCriteria(Departament.class);
 
uaiCriteria.andIsMemberOf(person, "employeeList");

Count和CountRegularCriteria

现在可以使用MultiSelect条件进行计数。 count方法已重命名为countRegularCriteria() 它的工作方式与旧版本类似,只是名称被重构以使内容更加鲜明。

CountAttribute

有时您需要计算属性而不是实体:

select count(p.id)
from Person p

您可以像上面那样运行JPQL:

final UaiCriteria<Person> uaiCriteria = 
    UaiCriteriaFactory.createMultiSelectCriteria(Person.class);
 
uaiCriteria.countAttribute("id");
 
final List result = uaiCriteria.getMultiSelectResult();

GroupBy和聚合函数

现在可以使用聚合函数来执行GroupBy了:求和,求差,除法,模块等。

select sum(p.value), p.status
from Payment p
group by p.status

可以像这样执行:

final UaiCriteria<Payment> uaiCriteria = 
    UaiCriteriaFactory.createMultiSelectCriteria(Payment.class);
 
uaiCriteria.sum("id").groupBy("status");
 
final List result = uaiCriteria.getMultiSelectResult();

新的Maven导入

如果要使用新版本,只需将以下xml添加到pom.xml中:

<dependency>
    <groupId>uaihebert.com</groupId>
    <artifactId>uaiCriteria</artifactId>
    <version>4.0.0</version>
</dependency>

我希望你喜欢这个消息。

不要忘了访问新站点—————> http://uaicriteria.com

如果您有任何疑问,疑问或建议,请将其发布。

再见。

翻译自: https://www.javacodegeeks.com/2014/11/easycriteria-has-evolved-to-uaicriteria-new-name-and-more-features.html

相关文章:

  • 2021-11-04
  • 2021-04-25
  • 2022-12-23
  • 2022-12-23
  • 2021-06-01
  • 2021-05-25
  • 2021-08-29
猜你喜欢
  • 2022-12-23
  • 2021-08-09
  • 2022-12-23
  • 2022-12-23
  • 2021-08-27
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案