Critérios para queries
-
Upload
rodrigo-vieira -
Category
Documents
-
view
1.341 -
download
0
description
Transcript of Critérios para queries
Critérios para Queries
Apresentado por:
Rodrigo Vieira
Critérios para Queries
• Uma maneira de criar e conectar objetos simples de Java que agem como filtros para selecionar os seus resultados desejados.
• Um mecanismo que permite que você forneça
Objetos de exemplo para mostrar o que você está procurando, controlando quais detalhes importam e quais propriedades ignorar.
Utilizando Critérios Simples
public static List tracksNoLongerThan(Time length, Session session) {
Criteria criteria = session.createCriteria(Track.class);
return criteria.list();
}
public static List tracksNoLongerThan(Time length, Session session) {
Criteria criteria = session.createCriteria(Track.class);
criteria.add(Restrictions.le("playTime", length));
return criteria.list();
}
public static List tracksNoLongerThan(Time length, Session session) {
return session.createCriteria(Track.clas). add(Restrictions.le("playTime", length)).list();
}
Compondo Critérios
É possível incluir mais de um Critérion em sua query e todos eles devem ficar satisfeitos que os objetos sejam incluídos nos resultados. Criando mais de um Critério de query e como ordenar. public static List tracksNoLongerThan(Time length, Session session) { Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.le("playTime", length)); criteria.add(Restrictions.like("title", "%A%")); criteria.addOrder(Order.asc("title").ignoreCase()); return criteria.list(); }
Podemos utilizar tambem para filtrar Strings.
criteria.add(Restrictions.like("title", “A”, MatchMode.ANYWHERE);
Se quiser fazer uma combinação sem distinção entre maiúscula e minúscula, utilize ilike em vez de like.
criteria.add(Restrictions.ilike("title", “A”, MatchMode.ANYWHERE);
Se quiser encontrar quaisquer objetos que combinem com qualquer um de seus critérios, em vez de exigir que eles se encaixem com todos os critérios, é preciso utilizar:
Restrictions.disjunction();
public static List tracksNoLongerThan(Time length, Session session) {
Criteria criteria = session.createCriteria(Track.class);
Disjunction any = Restrictions.disjunction();
any.add(Restrictions.le("playTime", length));
any.add(Restrictions.like("title", "%A%"));
criteria.add(any);
criteria.addOrder(Order.asc("title").ignoreCase());
return criteria.list();
Projeção e Agregação com Critérios
• Projeção – Significa simplesmente que você não precisa de todas as informações disponíveis em uma tabela.
• Agregação – Semelhantemente, envolve a identificação de propriedades, assim podendo pedir informações estáticas dessas propriedades, como valores de contagem, ou encontrar valores máximos, mínimos ou médios.
Obtendo uma projeção e que estamos interessados especificamente em recuperar a propriedade do titulo das faixas que encontramos.
public static List titlesContainingText(String text, Session session) {
Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.like("title", text, MatchMode.ANYWHERE).ignoreCase());
criteria.setProjection(Projections.property("title"));
return criteria.list();
[java] - [Video Killed the Radio Star, Gravity´s Angel]
Se recuperássemos as durações da faixa, o resultado seria esse :
criteria.setProjection(Projections.property(“playTime"));
[java] - [00:03:49, 00:06:06]
• O método projectionList() cria uma instância ProjectionList que pode conter escolhas multiplas de projeção para uma única query com critérios.
public static List titlesContainingTextWithPlayTimes(String text, Session session) {
Criteria criteria = session.createCriteria(Track.class);
criteria.add(Restrictions.like("title", text, MatchMode.ANYWHERE).ignoreCase());
criteria.setProjection(Projections.projectionList().
add(Projections.property("title")).
add(Projections.property("playTime")));
return criteria.list();
} [java] Title: Video Killed the Radio Star (Play Time: 00:03:49)
[java] Title: Gravity´s Angel (Play Time: 00:06:06)
OBRIGADO