Hibernate framework-08-01-Método de recuperación de Hibernate


Dos métodos de recuperación anteriores

Inserte la descripción de la imagen aquí

El gráfico del objeto de navegación debe establecer la relación de mapeo de asociación El
método de recuperación de OID debe recuperar los datos correspondientes a este objeto a través de la clave principal

Tres nuevos métodos de búsqueda

Inserte la descripción de la imagen aquí

SQL se usa generalmente cuando no se puede usar HQL

HQL

Introducción

Inserte la descripción de la imagen aquí
HQL es un lenguaje de consulta orientado a objetos y todos los campos están relacionados con la clase.
Ejecute declaraciones de consulta a través de la interfaz de consulta

Inserte la descripción de la imagen aquí

Los asteriscos no pueden aparecer en declaraciones HQL. Las
claves HQL no distinguen entre mayúsculas y minúsculas, pero otras sí distinguen entre mayúsculas y minúsculas.

SQL:	select * from user;
HQL:	from User

seleccione A de B básicos

package com.hibernate.ui;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

import com.hibernate.entity.Order;
import com.hibernate.entity.User;
import com.hibernate.util.HibernateUtil;

public class Test {
    
    

	public static void main(String[] args) {
    
    
//		saveUserAndOrder();		
//		addOrder();		
//		getUserAndOrders();		
//		deleteUser();
		
		
		testHQL();
		
		HibernateUtil.closeSessionFactory();
	}
	
	
	//HQL检索方式
	private static void testHQL() {
    
    
		Session session = HibernateUtil.openSession();
		//检索表中所有记录的所有字段
		//User不是关键字,是对象类型,所以区分大小写
//		String hql = "from User";
//		String hql = "select u from User u";//与上一句等价,这是起别名
//		import org.hibernate.query.Query;注意引用的包别错了
//		List<User> userList = query.list();
//		System.out.println(userList);
		
		
		
//		//查询某个字段的值
//		String hql = "select u.id from User u";
//		Query query = session.createQuery(hql);
//		//当查询结果中包含多条记录时,使用list方法执行HQL查询
//		List<User> userList = query.list();
//		System.out.println(userList);		
//		//当检索所有记录的某个字段时,结果中List集合元素的类型是该字段类型
//		List<Integer> userIds = query.list();
//		System.out.println(userIds);
		
		
		
		
		
		
		
//		//查询多个字段
//		String hql = "select u.userName, u.password from User u";
//		Query query = session.createQuery(hql);	
//		//当检索多个字段时,结果中List集合元素的类型是Object[]
//		List<Object[]> users = query.list();
//		for(Object[] o : users) {
    
    
//			System.out.println("用户名:" + o[0]);
//			System.out.println("密码:" + o[1]);
//		}
		
		
		//查询多个字段,推荐这种方式
//		String hql = "select u.userName, u.password from User u";
		//在HQL中可以直接调用构造方法(与上一句等价)
		//有条件:在User类里面加上带参数的构造方法
		//定义了带参数的构造方法同时也要定义无参构造方法
		String hql = "select new User(u.userName, u.password) from User u";
		Query query = session.createQuery(hql);	
		List<User> userList = query.list();
		System.out.println(userList);	
	}
}

dónde cláusula

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

//		//where
//		String hql = "from User where userName = '张三'";
//		Query query = session.createQuery(hql);
//		List<User> users = query.list();
//		System.out.println(users);
		
		
//			//模糊查询
//		String hql = "from User as u where u.userName like '张%'";//起别名使用as关键字,该关键字可以省略
//		String hql = "from User where userName='Tom'";
//		Query query = session.createQuery(hql);
//		List<User> users = query.list();
//		System.out.println(users);
		

Consulta de alias HQL

Inserte la descripción de la imagen aquí

Consulta polimórfica HQL

Inserte la descripción de la imagen aquí
Donde hay mapeo de herencia, el código depende de usted.

		//多态查询
		//SQL注入代码
//		String name = "1 or 1 = 1";
//		String password = "1 or 1 = 1";
//		String hql = "from User where userName = " + name + " and password=" + password;
		
		//查询结果中只有一条记录,直接返回单个对象
//		User user = (User) query.uniqueResult();
//		System.out.println(user);

HQL para recuperar un solo objeto

Inserte la descripción de la imagen aquí

		//多态查询
		//SQL注入代码
//		String name = "1 or 1 = 1";
//		String password = "1 or 1 = 1";
//		String hql = "from User where userName = " + name + " and password=" + password;
		
		//查询结果中只有一条记录,直接返回单个对象
//		User user = (User) query.uniqueResult();
//		System.out.println(user);

Agrupación y clasificación de HQL

Inserte la descripción de la imagen aquí

		//排序order by,默认升序排列
//		String hql = "from User u order by u.id desc";
//		Query query = session.createQuery(hql);
//		List<User> users = query.list();
//		System.out.println(users);
		
		
		
		
		
//		//group by 分组
//		String hql = "select u.userName, count(u) from User u group by u.userName having u.userName != 'Tom'";
//		Query query = session.createQuery(hql);
//		List<Object[]> users = query.list();
//		for(Object[] o : users) {
    
    
//			System.out.println("用户名:" + o[0]);
//			System.out.println("个数:" + o[1]);
//		}
		
		

Enlace de parámetros HQL

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

		//HQL传参方式?占位符
//		String hql = "from User where userName = ? and password = ?";
//		Query query = session.createQuery(hql);
//		query.setParameter(0, "张三");
//		query.setParameter(1, "111");
//		System.out.println(query.list());

Inserte la descripción de la imagen aquí

		//按照参数名称进行传参
		//把上面的问号换成冒号+属性 
//		String hql = "from User where userName = :username and password = :password";
//		Query query = session.createQuery(hql);
//		query.setParameter("username", "张三");
//		query.setParameter("password", "111");
//		System.out.println(query.list());

Inserte la descripción de la imagen aquí

	
//		//使用命名参数
//		//HQL语句中命名参数的名称同setProperties方法参数中传入的对象的属性名称要一致
//		String hql = "from User where userName = :userName and password = :password";
//		Query query = session.createQuery(hql);
//		User u = new User();
//		u.setUserName("张三");
//		u.setPassword("111");
//		query.setProperties(u);
//		System.out.println(query.list());
		
		
		
		
		
		
		//setProperties传入Map类型的对象
//		String hql = "from User where userName = :userName and password = :password";
//		Query query = session.createQuery(hql);
//		Map<String, Object> pro = new HashMap<>();
//		pro.put("userName", "张三");
//		pro.put("password", "111");
//		query.setProperties(pro);//HQL语句中命名参数的名称同setProperties方法参数中传入的Map对象的key名称要一致
//		System.out.println(query.list());
		

Actualización de la entidad HQL

Inserte la descripción de la imagen aquí

Eliminación de entidad HQL

Inserte la descripción de la imagen aquí

Subconsulta HQL

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Consulta de paginación HQL

Inserte la descripción de la imagen aquí

Consulta de referencia de HQL

Inserte la descripción de la imagen aquí




QBC

Introducción a QBC

Inserte la descripción de la imagen aquí

Expresión QBC

Inserte la descripción de la imagen aquí

Clase de restricciones

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí




Consulta SQL local

Inserte la descripción de la imagen aquí

Consultar toda la información del usuario

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44627608/article/details/115213049
Recomendado
Clasificación