hibernate 简单查询

1. 查询整个映射对象所有字段

//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段  

        String hql = "from Users";  

        Query query = session.createQuery(hql);  

           

        List<Users> users = query.list();  

        for(Users user : users){  

            System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());  

        }  

  

 输出结果为:  

name1 : password1 : 1

name2 : password2 : 2

name3 : password3 : 3

2.查询字段  

//查询其中几个字段  

        String hql = " select name,passwd from Users";  

        Query query = session.createQuery(hql);  

        //默认查询出来的list里存放的是一个Object数组  

        List<Object[]> list = query.list();  

        for(Object[] object : list){  

            String name = (String)object[0];  

            String passwd = (String)object[1];  

               

            System.out.println(name + " : " + passwd);  

        }  

输出结果为:  

name1 : password1  

name2 : password2  

name3 : password3 

3.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回

//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了 

         String hql = " select new list(name,passwd) from Users";  

        Query query = session.createQuery(hql);  

        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了  

        List<List> list = query.list();  

        for(List user : list){  

            String name = (String)user.get(0);  

            String passwd = (String)user.get(1);  

               

            System.out.println(name + " : " + passwd);  

        }  

        /** 

        输出结果为: 

         name1 : password1 

        name2 : password2 

        name3 : password3 

         */

4.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回

//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了  

        String hql = " select new map(name,passwd) from Users";  

        Query query = session.createQuery(hql);  

        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了  

        List<Map> list = query.list();  

        for(Map user : list){  

            //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值  

            //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了  

            String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形  

            String passwd = (String)user.get("1");  

               

            System.out.println(name + " : " + passwd);  

        }  

        /** 

        输出结果为: 

         name1 : password1 

        name2 : password2 

        name3 : password3 

         */

5.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回

6.条件查询

//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数  

        String hql = "from Users where name=? and passwd=?";  

        Query query = session.createQuery(hql);  

        //第1种方式  

//      query.setString(0, "name1");  

//      query.setString(1, "password1");  

        //第2种方式  

        query.setParameter(0, "name1",Hibernate.STRING);  

        query.setParameter(1, "password1",Hibernate.STRING);  

        List<Users> list = query.list();  

        for(Users users : list){  

            System.out.println(users.getId());  

        }  

//条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数  

        String hql = "from Users where name=:username and passwd=:password";  

        Query query = session.createQuery(hql);  

        //第1种方式  

//      query.setString("username", "name1");  

//      query.setString("password", "password1");  

        //第2种方式,第3个参数确定类型  

        query.setParameter("username", "name1",Hibernate.STRING);  

        query.setParameter("password", "password1",Hibernate.STRING);  

        List<Users> list = query.list();  

        for(Users users : list){  

            System.out.println(users.getId());  

        

  

//条件查询,通过setProperties设置参数  

        String hql = "from Users where name=:username and passwd=:password";  

        Query query = session.createQuery(hql);  

        //MyUser类的2个属性必须和:username和:password对应  

        MyUser myUser = new MyUser("name1","password1");  

        query.setProperties(myUser);  

        List<Users> list = query.list();  

        for(Users users : list){  

            System.out.println(users.getId());  

        

  

7.update 数据

执行SQL语句(为什么要用SQL语句,我想是为了执行某些复杂的SQL语句吧) 

String sql="update Table set field = ‘test‘"

Session session = HibernateSessionFactory.getSession();

session.createSQLQuery(sql).executeUpdate();

ts.commit();

执行HQL语句   

String hql="update Table set field = ‘test‘"

Session session = HiberanteSessionFactory.getSession();

Transaction ts = session.beginTransaction();

Query query = session.createQuery(hql);

query.executeUpdate();

ts.commit();

时间: 2024-11-14 23:09:51

hibernate 简单查询的相关文章

Hibernate HQL查询:

Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装.完整的HQL语句形势如下:Select/update/delete…… from …… where …

Hibernate HQL查询语句总结

Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";List list=session.CreateQuery(hql).list();上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回.这里需要注意的是,Hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的E

Hibernate【查询、连接池、逆向工程】

前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式....到目前为止,我们都是使用一些简单的主键查询阿...使用HQL查询所有的数据....本博文主要讲解Hibernate的查询操作,连接池,逆向工程的知识点... get/load主键查询 由于主键查询这个方法用得比较多,于是Hibernate专门为我们封装了起来... get()立即查询 load()懒加载 对象导航查询 如果对象与对象之前存在一对多.多对一的关系的时候 在以前SQL查询的时候:我们如果想要得到

Spring Data JPA、 MyBatis与Hibernate简单对比

整体参考: https://blog.csdn.net/xihuanyuye/article/details/81201441 详细参考: https://blog.csdn.net/qq897958555/article/details/53208002 1.Spring Data JPA与Hibernate Spring Data JPA是Spring Data的子模块.使用Spring Data,使得基于“repositories”概念的JPA实现更简单和容易.Spring Data JP

4、Hibernate的查询方式

一.Hibernate的查询方式:OID查询 1.OID检索:Hibernate根据对象的OID(主键)进行检索 1-1.使用get方法 Customer customer = session.get(Customer.class,1L); 1-2.使用load方法 Customer customer = session.load(Customer.class,1L); 3.对象导航检索:Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式. Customer custom

第十节:Hibernate 标准查询

Hibernate 标准查询 标准查询 Hibernate 提供了操纵对象和相应的 RDBMS 表中可用的数据的替代方法.一种方法是标准的 API,它允许你建立一个标准的可编程查询对象来应用过滤规则和逻辑条件. Hibernate Session 接口提供了 createCriteria() 方法,可用于创建一个 Criteria 对象,使当您的应用程序执行一个标准查询时返回一个持久化对象的类的实例. 以下是一个最简单的标准查询的例子,它只是简单地返回对应于员工类的每个对象: Criteria

对象序列化和反序列--Hibernate的查询和新增极其相似

Hibernate几个关键字持久化,ORM(关系对象映射)(数据库中关系称作是一张表) 应用在项目中,刘一从写的查询代码,每次都挂掉,想要弄出测试数据,自己想着把查询出来的复杂数据弄到文件里自己要是去造那些复杂数据很麻烦public class Object1 { public static void main(String args[]){ HashMap<String, Object> obj=new HashMap<String,Object>(); obj.put(&quo

sql server简单查询

一.插入多行数据: 1.insert into ... select   从一个表中取出数据插入另一个已存在的表 2.select into   从一个表中取出数据插入一个新表中 3.insert into ()   union   select 常量列表 二.简单查询  1. 查询所有行和列 SELECT  *  FROM 表名  2.查询部分列 SELECT  列列表   FROM 表名  3.查询部分行  SELECT  列列表   FROM 表名 WHERE 列 运算符 值  4.列加别

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN