Hibernate SQL

本文介绍了一个使用SQL进行数据库操作的示例,包括查询、新增、修改、删除等基本操作,并展示了如何实现模糊查询、分页查询及聚合函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.     SQL

针对于数据库表,表名不区分大小写

1.1.查询

@Test

       public void getAll() {

              Session session = HibernateUtils.getSession();

              // 使用SQL:sql语句。

              List<Stu> list = session.createSQLQuery("select * from Stu order by id").addEntity(Stu.class).list();

              for (Stu stu : list) {

                     System.out.println(stu);

              }

              session.close();

       }

       @Test

       public void getIdAndName() {

              Session session = HibernateUtils.getSession();

              // 使用SQL:sql语句。 createSQLQuery() 返回一个List<Objeect[]> 数组,然后将数组中的内容转换成学生对象。

              List<Object[]> list = session.createSQLQuery("select id,name from stu order by id").list();

              Stu stu =null;

              for (int i = 0; i < list.size(); i++) {

                     Object[] obj = list.get(i);

                     stu = new Stu();

                     //     将集合中的数组取出来放到obj数组中。

                     stu.setId(Integer.parseInt(obj[0].toString()));

                     stu.setName(obj[1].toString());

                     System.out.println(stu);

              }

              session.close();

       }

 

1.2.新增

/**

        *

        * @Description:  说白了executeUpdate().jdbc......

        * @author mengqx

        * @date   2017年8月31日

        */

       @Test

       public void add() {

              Session session = HibernateUtils.getSession();

              Transaction tr = session.beginTransaction();

              // 使用SQL:sql语句。

              Query query = session.createSQLQuery("insert into stu values (?,?,?)").setParameter(0, 111).setParameter(1, "王二小").setParameter(2, "asdfghjkl;'");

              int result = 0;

              try {

                     result = query.executeUpdate();

                     tr.commit();

              } catch (Exception e) {

                     e.printStackTrace();

                     tr.rollback();

              }finally{

                     session.close();

              }

              System.out.println(result);

       }

 

1.3.修改

      @Test

      public void update() {

           Session session = HibernateUtils.getSession();

           Transaction tr = session.beginTransaction();

           // 使用SQL:sql语句。

           Query query = session.createSQLQuery("update stu set name = ? where id = ?").setParameter(0, "胡八一").setParameter(1, 111);

           int result = 0;

           try {

                 result = query.executeUpdate();

                 tr.commit();

           } catch (Exception e) {

                 e.printStackTrace();

                 tr.rollback();

           }finally{

                 session.close();

           }

           System.out.println(result);

      }

 

1.4.删除

@Test

       public void delete() {

              Session session = HibernateUtils.getSession();

              Transaction tr = session.beginTransaction();

              // 使用SQL:sql语句。

              Query query = session.createSQLQuery("delete from stu where id = ?").setParameter(0, 111);

              int result = 0;

              try {

                     result = query.executeUpdate();

                     tr.commit();

              } catch (Exception e) {

                     e.printStackTrace();

                     tr.rollback();

              }finally{

                     session.close();

              }

              System.out.println(result);

       }

 

1.5.模糊查询

@Test

       public void like() {

              Session session = HibernateUtils.getSession();

              Transaction tr = session.beginTransaction();

              // 使用SQL:sql语句。

              List<Stu> list = session.createSQLQuery("select * from stu where name like '%' || ? || '%' order by id ").addEntity(Stu.class).setParameter(0, "li").list();

              for (Stu stu : list) {

                     System.out.println(stu);

              }

              session.close();

       }

 

1.6.分页查询

@Test

       public void page() {

              Session session = HibernateUtils.getSession();

              int pageIndex = 2; // 分页语句从第几条开始查:(pageIndex-1)*pageSize

              int pageSize = 3;

              List<Stu> list = session.createSQLQuery("select * from stu order by id").addEntity(Stu.class).setFirstResult((pageIndex - 1) * pageSize)

                            .setMaxResults(pageSize).list();

              for (Stu stu : list) {

                     System.out.println(stu);

              }

              session.close();

       }

 

1.7.聚合函数的使用

@Test

       public void count() {

              Session session = HibernateUtils.getSession();

              // 聚合函数查询要使用uniqueResult();该方法返回一个Object。不能强制类型转换

              Object object = session.createSQLQuery("select count(*) from stu").uniqueResult();

              System.out.println(object);

              session.close();

       }

 

Hibernate是一个开源的Java持久化框架,它提供了对象-关系映射(ORM)的功能,可以方便地将Java对象映射到关系数据库中的表。通过Hibernate,我们可以使用面向对象的方式来操作数据库,而不需要编写大量的SQL语句。 在Hibernate中,我们可以使用HQL(Hibernate Query Language)来执行数据库操作,它类似于SQL语言,但更加面向对象。HQL允许我们使用实体类和属性名称来进行查询和更新操作。 除了HQL,Hibernate也支持使用本地SQL语句进行数据库操作。我们可以使用Hibernate提供的SQL查询功能,执行原生的SQL语句并获取结果。 下面是一个使用Hibernate执行SQL查询的示例: ```java // 创建Session对象 Session session = HibernateUtil.getSessionFactory().openSession(); // 创建原生SQL查询 String sqlQuery = "SELECT * FROM your_table"; SQLQuery query = session.createSQLQuery(sqlQuery); // 获取结果集 List<Object[]> rows = query.list(); for (Object[] row : rows) { // 处理结果集 // row[0]代表第一个列的值,row[1]代表第二个列的值,依此类推 } // 关闭Session session.close(); ``` 在上面的示例中,我们首先创建了一个Session对象,然后使用`createSQLQuery()`方法创建了一个原生SQL查询对象。我们可以通过调用`list()`方法执行查询并获取结果集。最后,记得关闭Session对象。 需要注意的是,使用原生SQL查询可能会使你的代码与特定的数据库厂商耦合,不够跨数据库。在实际开发中,建议尽量使用Hibernate提供的HQL查询,它更加灵活和可移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值