Hibernate学习笔记(一)-->数据库单表操作

Hibernate框架是一个全ORM映射框架,是一个非常流行的数据库操作框架之一,现在比较流行的还有MyBatis半ORM映射框架

在MyEclipse IDE开发工具中,可以很轻松的搭建Hibernate框架。

一、搭建一个项目

1.首先在MyEclipse中搭建一个web项目。

2.选中项目右键-->myeclipse-->Project Facets-->找到hibernate。这样就为项目添加了hibernate支持

3.打开hibernate.cfg.xml配置文件,在可视化编辑页面配置数据库连接,和事务,如下图,数据库根据本地数据库进行配置。

  左边配置数据库连接,右上部分配置事务show_sql=true : 作用是在控制台输出sql语句,hbm2ddl.auto=update : 数据库自动更新

  右下方的不要管

4.通过反编译创建一个和数据库中已经存在的表对应的bean实体类,具体操作略。

二、数据库具体操作(增删该查)

1.事务管理和增删改,先上代码

public static void main(String[] args) {

        //获取Session对象
        Session s = HibernateSessionFactory.getSession();
        //开启事务
//        s.beginTransaction();
        //数据库数据添加
//        s.save(new DateTxt(new Date(), "ss"));
        //提交事务
//        DateTxt data = (DateTxt)s.get(DateTxt.class, 50);
//        data.setTime(new Date());     //修改数据
//        s.update(data);

        //删除信息
//        s.delete(data);
//        s.getTransaction().commit();
        //关闭事务
//        s.close();
}

通过代码已经很清晰的看到如何操作了,下面总结一下

beginTransaction()开启事务

getTransaction().commit()提交事务

getTransaction().rollback()回滚事务

save(对象)保存数据

update(对象)修改数据

delete(类名.class,主键ID)删除数据

2.查询。

查询方法比较多,就比进行太多代码演示了。

     //基础查询,其他查询都是在此基础上进行扩展
        //查询语句createQuery(HQL查询语句) from + 表对应的类名 返回Query对象
        //list(): 返回一个List集合
        String hql = "from DateTxt";
        List<DateTxt> lists = s.createQuery(hql).list();
        for (DateTxt dateTxt : lists) {
            System.out.println(dateTxt.toString());
        }
        //分页查询
        List<DateTxt> lists2 = s.createQuery("from DateTxt").setFirstResult(0).setMaxResults(2).list();
        for (DateTxt dateTxt : lists2) {
            System.out.println(dateTxt.toString());
        }
        //聚合函数查询,count()查询数据总数类型要使用Long
        Integer max = (Integer) s.createQuery("select min(id) from DateTxt").uniqueResult();
        System.out.println(max);

hibernate单表查询总结
* 1.from + 表对应的类名 : 查询所有
* 2.select new 表对应的类(变量1,变量2,。。。) from 表对应的类名:查询给定列的数据
  需要在bean里面给出对应的构造器
* 3.from 类名 where 属性名 = ?:条件查询
  在createQuery()方法后调set*(下标或属性名,value)方法给值
* 4.from 类名 where 属性名 like ?:模糊查询
  在createQuery()方法后调set*(下标或属性名,%value%)方法给值
* 5.from 类名 where 属性名 like =:别名 :通过 别名查询
  在createQuery()方法后调set*(别名,value)方法给值
* 6.在查询语句后调用.uniqueResult()返回单条查询结果
* 7.在查询语句后调用.setFirstResult(第几条数据开始).setMaxResults(查询的最大条数)实现分页查询
* 8.Long max = (Long) s.createQuery("select count(id) from DateTxt").uniqueResult():聚合函数查询,返回数据的总数
* 9.把上面的count换成max/min : 返回最大索引/最小索引
* 10.session.createSQLQuery(原生SQL语句).addEntity(类名.class) : 使用原生sql语句查询
* 11.select 别名 from 类名 as 别名 : 通过别名返回结果集,通常用于多表查询
* 12.session.get(类名.class ,主键ID):通过主键id快速查找单条数据



时间: 2024-10-01 05:06:31

Hibernate学习笔记(一)-->数据库单表操作的相关文章

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

MySQL学习笔记02_数据库和表的基本操作

02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specification]...] 解释: [IF NOT EXISTS]创建时提前检查一下是否存在数据库 create_specification:(创建条件) [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name CHAR

C#学习笔记 --文件和注册表操作

System.MarshalByRefObject --这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据. FileSystemInfo --这是表示任何文件系统对象的基类 FileInfo和File --这些类表示文件系统上的文件 DirectoryInfo和Directory --这些类表示文件系统上的文件夹 Path --这个类包含的静态成员可以用于处理路径名 DriveInfo --它的属性和方法提供了指定驱动器的信息 Directory类和File类只包含静态方法

Hibernate和jsp做数据库单表的增删改查

虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 1 package com.chinasofti.hibb.struts; 2 3 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.cfg.Configuration; 8 import com.chinaso

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

Symfony2学习笔记之数据库操作

数据库和Doctrine让我们来面对这个对于任何应用程序来说最为普遍最具挑战性的任务,从数据库中读取和持久化数据信息.幸运的是,Symfony和Doctrine进行了集成,Doctrine类库全部目标就是给你一个强大的工具,让你的工作更加容易. Doctrine是完全解耦与Symfony的,所以并不一定要使用它. 一个简单例子:一个产品,我们首先来配置数据库,创建一个Product对象,持久化它到数据库并把它读回来. 首先我们需要创建一个bundle: $php app/console gene

学习MySQL之单表操作(二)

##单表操作 ##创建表 CREATE TABLE t_employee( empno INT(11), ename VARCHAR(20), job VARCHAR(40), MGR INT(11), Hiredate DATE DEFAULT '0000-00-00', sal DOUBLE(10,2), comm DOUBLE(10,2), deptno INT(11), UNIQUE INDEX uk_empno(empno) ##使用唯一索引 ); ##增 INSERT INTO t_

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Bootstrap快速学习笔记(2)表单系列之二

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之二 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: 表单控件大小 表单控件状态 按钮 图像 详细介绍 表单控件大小表单控件大小可以通过给表单控件添加class类来实现,如果想要比较大,则添加input-lg类,如果想要比较小, 则添加input-sm类,但这仅是对高度进行了处理,如果要对宽度进行处理,需要在每个input控件外围添加div容器并带有col-xs-4类,并 且要在这组控件的外围