Red de conocimiento del abogados - Ley de patentes - Tres métodos de consulta de hibernación

Tres métodos de consulta de hibernación

1.1. Descripción general de SQL

HQL es la abreviatura de Hibernate Query Language, que proporciona capacidades de consulta más ricas, más flexibles y más poderosas. HQL está cerca de la sintaxis de consulta de declaraciones de SQL.

El formulario de declaración HQL completo es el siguiente:

seleccionar actualizar | de... donde... agrupar por... tener... ordenar por... asc|desc

donde Actualizar y eliminar son funciones recién agregadas en Hibernate3. Se puede ver que la consulta HQL es muy similar a la consulta SQL estándar. La consulta HQL ocupa una posición central en todo el sistema operativo de la entidad Hibernate.

String hql = "declaración HQL";

Consulta consulta = session.createQuery(hql);

Lista lista = query.list(); Consultar y obtener múltiples colecciones de objetos de entidad

Object result = query.uniqueResult(); //Consultar y obtener un objeto de entidad

int x = query.executeUpdate(); actualizar o eliminar declaración para devolver el número de filas afectadas en la tabla de datos

1.2 Consulta de entidad

Durante el proceso de consulta, el nombre de la tabla utiliza el nombre de la clase y el nombre de la columna. utiliza el nombre del atributo. Los nombres de las clases y los nombres de los atributos se distinguen por el tamaño. Escribir

String hql="from Users";//from el nombre del tipo de clase de entidad

Consulta consulta = sesión. createQuery(hql);

Lista lista = query.list();

for (Usuarios usuario: lista) {

System.out. println(usuario);

}

1.3. Consulta con donde

Consulta consulta = session.createQuery("de Usuarios donde uid=3");

Usuarios usuario = (Usuarios) consulta.uniqueResult();//uniqueResult objeto único

System.out.println(usuario);

Consulta consulta = sesión .createQuery("from Usuarios donde uid>5");

Lista lista = query.list();

for (Usuarios usuario: lista) {

System.out.println(user);

}

1.3 Consulta de atributos

Consulta algunos atributos

Cadena. hql="select u.uid,u.uname,u. upwd from Usuarios u donde u.uname='Zhang San'";

Consulta consulta = session.createQuery(hql);

Lista lista = query.list ();

for (Objeto[] objetos: lista) {

System.out.println(Arrays.toString (objetos));

}

String hql="seleccione nuevos usuarios (u.uname,u.upwd) de Usuarios u donde u.uname='Zhang San'";

Consulta consulta = session.createQuery( hql);

Lista lista = query.list();

para (Usuarios usuario: lista) {

System.out.println(usuario);

}

Actualización y eliminación de entidades

.

p>

Solo compatible con la versión hibernate 3

//Actualización

String hql="actualización Los usuarios establecen uname='王五',upwd='321' donde uid = 3";

int res = session.createQuery(hql).executeUpdate();

//Eliminar

Cadena hql="eliminar de Usuarios donde uid =3";

int res = session.createQuery(hql).executeUpdate();

/*

Valor de retorno resultado:

Entero positivo: datos de las filas afectadas de la tabla

0: la declaración se ejecuta normalmente, pero ninguna fila se ve afectada

Entero negativo: generalmente -1, la ejecución de la declaración HQL es una declaraciones de consulta

*/

Las declaraciones HQL no se pueden agregar

1.5. p> El método de procesamiento es el mismo que el de clasificación en la declaración SQL

String hql="from Users order by uid";

Query query = session.createQuery(hql);

Lista lista = query.list();

for (Usuarios usuario: lista) {

System.out.println(usuario);

}

El orden por declaración solo puede aparecer en la última posición de la declaración

Agrupación

El método de procesamiento es el mismo como consulta de agrupación en la declaración SQL

La declaración de agrupación debe procesar el filtrado y solo se puede usar la declaración de tener, no la declaración de dónde.

String hql = "seleccione e.dept.deptno, cuenta(e) del grupo Emp e por dept.deptno";

String hql = "seleccione e.dept.deptno, count(e) del grupo Emp e por dept.deptno con count(e)>=5";

1.6. Vinculación de parámetros

Uso de parámetros de marcador de posición

String hql="de Usuarios donde uid=? o uname=?";

Consulta consulta = session.createQuery(hql);

//El índice comienza desde 0

query.setInteger(0, 3);//query.setParameter(0, 3);

query.setString(1, "Zhang San");//query.setParameter( 1, "Zhang San");

Lista lista = query.list();

for (Usuarios usuario: lista) {

Sistema .out .println(usuario);

}

Usar nombre de parámetro

Cadena hql = "de Usuarios donde uid=:no1 o uid=:no2" ;

Consulta consulta = session.createQuery(hql);

query.setInteger("no1", 1);

query.setInteger("no2", 3 );

//....

Puede utilizar una combinación de parámetros de punto y parámetros de nombre

Cadena hql = "from Usuario donde uid= ? o uid=:no2";

Consulta consulta = session.createQuery(hql);

query.setInteger(0, 7788);

consulta. setInteger ("no2", 7566);

//....

//Utilice parámetros de punto y parámetros de nombre de forma mixta. Todos los parámetros de punto deben colocarse delante de un nombre. aparece el parámetro, los parámetros del marcador de posición no pueden volver a aparecer

1.7 Consulta de conexión

--Instrucción SQL: consulta nombre del empleado, salario, nombre del departamento

SELECT ENAME,SAL ,DNAME

FROM EMP e ÚNETE AL DEPARTAMENTO d ON e.DEPTNO=d.DEPTNO

SELECCIONE ENAME,SAL,DNAME FROM EMP,DEPT WHERE DEPTNO=DEPT.DEPTNO

No existe una declaración on

Lo que se puede conectar a la consulta debe ser un subatributo del objeto de consulta principal

String hql="SELECT e .ename , e.sal, e.dept.dname FROM Emp e";

//consulta de conexión HQL

String hql="SELECT e.ename, e.sal, d .dname FROM Emp e JOIN e.dept d";

String hql = "SELE

CT e FROM Emp e JOIN e.dept"; //JOIN no tendrá significado

String hql = "FROM Emp e JOIN e.dept";

Consulta query = sesión. createQuery (hql);

List list = query.list();

//Se almacenarán dos elementos en la matriz de la colección List:

//0: Datos maestros (Emp)

//1: Datos detallados (Depto)

//Consulta la información del empleado numerada 7788, y al mismo tiempo agregue el departamento correspondiente La información y la información del administrador se consultan y guardan en los subatributos correspondientes

String hql = "FROM Emp e JOIN FETCH e.dept d JOIN FETCH e.manager m WHERE e.empno= 7788";

Consulta consulta = session.createQuery(hql);

Emp emp = (Emp) query.uniqueResult();

System.out. println(emp);

System.out.println(emp.getManager());

System.out.println(emp.getDept());

1.8. Paginación

Cadena hql = "de los usuarios";

Consulta consulta = session.createQuery(hql);

query.setFirstResult(0) ;

query.setMaxResults(2);

2. Consulta QBC

La consulta QBC (Consulta por criterios) consiste en consultar objetos utilizando la consulta por criterios. API proporcionada por Hibernate. Esta API encapsula el ensamblaje dinámico de declaraciones SQL y proporciona una interfaz funcional más orientada a objetos para consultas.

Las tres categorías más importantes de consultas QBC:

Restricciones restricciones condicionales

Configuración de la columna Proyecciones

Clasificación de orden

2.1. Implementación de consultas

Criterios de criterios = session.createCriteria(Users.class);

//session.createCriteria("entity.Users");

//session.createCriteria(Users.class, "alias");

List list = criterios.list();

//Consulta resultados de una sola fila ( Si el resultado tiene dos filas o más, se reportará un error)

Objeto UniqueResult = criterios.uniqueResult();

2.2 Proyección de la columna de proyecciones

Sintaxis:

//Consulta propiedades de uname

Criterios de criterio = session.createCriteria(Users.class);

Propiedad PropertyProjection = Projections.property("nombre" );

criterios.setProjection(propiedad);

Lista resultado = criterios.list();

//Consulta uname, propiedades arriba

Criterios de criterios = session.createCriteria(Users.class);

//1 Crear una lista de proyección

ProjectionList outlookList = Projections.projectionList();<. /p>

//2. Agregar proyecciones de columnas a la lista de proyecciones

PropertyProjection property1 = Projections.property("uname");

PropertyProjection property2 = Projections.property( "upwd") ;

projectList.add(property1).add(property2);

//3. Establece la lista de proyección según los criterios

criterios. .setProjection(projectionList );

Lista resultado = criterios.list();

Valor de retorno tipo nombre del método descripción

PropertyProjection Projections.property especifica una propiedad

p>

AggregateProjection Projections.avg calcula el valor promedio

CountProjection Projections.count cuenta el número de un determinado atributo

CountProjection Projections.countDistinct cuenta el número de valores diferentes de un determinado atributo

PropertyProjection Projections.groupProperty especifica una propiedad como propiedad de grupo

Agg

regateProjection Projections.max Encuentra el valor máximo

AggregateProjection Projections.min Encuentra el valor mínimo

ProjectionList Projections.projectionList Crea un objeto ProjectionList

Projection Projections.rowCount Consulta conjunto de resultados Número de registros

AggregateProjection Projections.sum Encuentra el total de un determinado atributo

2.3 Restricciones Restricciones condicionales

Sintaxis:

Criterios de criterio = session.createCriteria(Users.class);

Criterio notNull = Restrictions.isNotNull("comm");

criterios.add(notNull); condición (si se agregan varias condiciones y se utilizan para conectar las condiciones predeterminadas)

Lista list = criterios.list();

Descripción del nombre del método del tipo de valor de retorno

SimpleExpression Restrictions.eq es igual a (igual)

Criterion Restrictions.allEq usa Map, Key/Valu para realizar múltiples comparaciones iguales

SimpleExpression Restrictions.gt es mayor que (mayor que )

SimpleExpression Restrictions.ge mayor que o igual

SimpleExpression Restrictions.lt menor que (menor que)

SimpleExpression Restrictions.le menos que o igual (menor que o igual)

Criterion Restrictions.between corresponde a SQL's entre

SimpleExpression Restrictions.like corresponde a SQL's like

Criterion Restrictions.in corresponde a SQL en

Restricciones de expresión lógica.y relación

Restricciones de expresión lógica.o relación

Restricciones de criterio.isNull está vacío

Restricciones de criterios.sqlRestricción Consulta restringida de SQL

Restricciones de criterios.no negación

2.3 Orden de clasificación

Sintaxis:

Criterios de criterios = sesión. .createCriteria( Depto.clase);

criterios.addOrder(Order.asc("nombre"))

.addOrder(Order.desc("loc"));

//SELECCIONAR * DESDE DEPARTAMENTO ORDENAR POR nombre ASC,

loc DESC

Tipo de valor de retorno nombre del método descripción

Orden Order.asc(String propertyName) orden ascendente

Order Order.desc(String propertyName) orden descendente

2.4. Consulta de paginación

Criterios de criterio = session.createCriteria(Dept.class);

int pageNum = 2, pageSize = 5;

criterios.setFirstResult((pageNum-1)*pageSize); //Consulta el subíndice de la fila inicial

criterio.setMaxResults(pageSize); //El número máximo de filas para consultar

List list = criterios.list();

//El método setFirstResult y el método setMaxResults también se pueden utilizar en tipos SQLQuery y Query

3. Consulta SQL nativa

1. Consulta

String sql = "select uid,uname,upwd from _users";

Lista lista = session.createSQLQuery(sql).list();

for(Objeto obj: lista){

System.out.println(obj);

}

2. addEntity()

String sql = "select uid,uname,upwd from _users";

// addEntity() puede decirle a Hibernate el tipo de objeto que desea encapsular y luego encapsularlo automáticamente para ti

consulta SQLQuery = session.createSQLQuery(sql).addEntity(Users.class);

Lista lista = query.list();

for(Usuarios usuario: lista){

System.out.println(user.getUname());

}

3. resultado único

String sql = "seleccione uid,uname,upwd de _users donde uid = 2";

Consulta SQLQuery = session.createSQLQuery(sql).addEntity(Users.class);

Usuarios user = (Usuarios) query.uniqueResult();//Devolver un solo objeto

System.out.println(user.getUname());

USB Micrófono

Construcción del sitio web de Shenzhen www.sz886.com