1. 添加 hibernate 依赖

打开项目结构

选择模块选项卡

添加 hibernate 依赖

添加配置文件,如果已经有配置文件可以直接选择该文件,没有也可以直接新建一个:


新建完后默认配置文件如下:

2. 完成配置文件

配置文件的一个例子,hibernate 还有很多参数配置,可以去官网查看:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory><!-- 数据库方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- MySql数据库连接 --><property name="connection.url">jdbc:mysql://47.102.200.22:3306/jboa_tesst</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- 连接自动提交 --><property name="hibernate.connection.autocommit">true</property><!-- 显示hibernate持久层操作,即sql语句 --><property name="show_sql">true</property><!-- 将sql语句格式化 --><property name="format_sql">true</property><!-- 自定义的CacheProvider的类名 --><property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property><!-- 使用二级缓存. --><property name="cache.use_second_level_cache">true</property><!-- 允许查询缓存, --><property name="cache.use_query_cache">true</property><mapping resource="entity/BizCheckResult.hbm.xml" /><mapping resource="entity/BizClaimVoucher.hbm.xml" /></session-factory>
</hibernate-configuration>

3. IDEA 连接数据库

打开数据库工具窗口:

添加数据库:

设置数据库驱动:

Driver files 中添加数据库驱动包,可以选择本地的也可以 IDEA 直接从网上下载,版本注意对应。

添加数据库连接:


测试连接:

4. 反向生成实体类

打开左下角的 Persistence 选项卡(添加hibernate依赖后就会出现):

右键项目的 hibernate,选择最后一个生成映射文件:

生成实体类:

5. 操作实例:

数据库如下:

代码如下:

 @Testpublic void test() {//加载hibernate配置信息   实例化session工厂Configuration configuration = null;SessionFactory sessionFactory = null;//持久层所有操作都需要sessionSession session = null;try {//configure  默认会去加载   src目录下名为hibernate.cfg.cml的配置件sessionFactory = new Configuration().configure().buildSessionFactory();session = sessionFactory.openSession();//get和load都是根据主键(ID)去查询,  都是先从缓存中抓取, 如果没有再去数据库查询//get 是直接从数据库中查询, 查询不到返回NULL//load 是从数据库中查询出来一个auction的代理类对象, 如果不使用这个对象就不会数据库中查询Auction auction = (Auction) session.get(Auction.class, 7);Auction auction2 = (Auction) session.load(Auction.class, 7);System.out.println(auction2);System.out.println(auction.getAuctionName());} catch (Exception e) {e.printStackTrace();}finally{if(null != session){session.close();}}}
  • 增删改
@Test
public void test01(){//crudSessionFactory sessionFactory = null;Session session = null;Transaction transaction = null;try {sessionFactory = new Configuration().configure().buildSessionFactory();session = sessionFactory.openSession();//hibernate 他的添加修改删除都是纯粹的面向对象的思想//添加的话    必须要知道   主键策略//native根据不同的数据库采用不同的主键生成策略  比如mysql  就是主键自增长//                                 oracle  就是序列自增长//assigned 开发人员手动给主键//数据库中的增删改一定是在事务中完成的transaction = session.beginTransaction();Auction auction = new Auction();auction.setAuctionID(281);//session.save(auction);//新增(注意你的 主键策略)//session.sava(auction);//修改  (注意实体类的ID必须有值)//session.update(auction);//删除 (注意实体类的ID必须有值, 且有ID就可以了)session.delete(auction);transaction.commit();} catch (Exception e) {e.printStackTrace();}finally{if(null != session){session.close();}}
}
  • HQL 语句:
 //HQL 两个特征
//HQL 是一个半SQL   半面向对象的  数据库查询语句
//HQL  他是跨平台的查询语句(不管是什么数据库hql都可以执行, 写法都一样)
@Test
public void test03(){SessionFactory sessionFactory = null;Session session = null;try {sessionFactory = new Configuration().configure().buildSessionFactory();session = sessionFactory.openSession();//查询所有的拍卖品//如果查询部分字段  使用投影查询  (用的不多)//写HQL  需要注意一点HQL的思想实际是  OOP 的 思想, 只是他的写法还是偏向SQL的写法//Auction一定要是 我们的实体类//查询所有商品//           List<Auction> auctions = session.createQuery("from Auction").list();
//          for (Auction auction : auctions) {//              System.out.println(auction);
//          }//投影查询//username和userpassword必须是AuctionUser中的属性名//hibernate 的占位符是从0开始//uniqueResult 返回唯一的结果, 如果数据大于一条  就报错//           AuctionUser auctionUser = (AuctionUser)session.createQuery("from AuctionUser as atus where atus.userName=? and atus.userPassWord=?")
//          .setString(0, "test1").setString(1, "202cb962ac59075b964b07152d234b70")
//          .uniqueResult();
//          System.out.println(auctionUser);
////HQL 使用聚合函数
//          List<Object> objects = session.createQuery("select count(*),max(auctionStartPrice)," +
//                  "min(auctionStartPrice),sum(auctionStartPrice),avg(auctionStartPrice)" +
//                  " from Auction").list();
//          Object[] objects2 = (Object[]) objects.get(0);
//          for (Object object : objects2) {//              System.out.println(object);
//          }//HQL 实现分页//功能和limit一样
//          List<Auction> auctions = session.createQuery("from Auction order by auctionStartPrice DESC").setFirstResult(0).setMaxResults(10).list();
//          for (Auction auction : auctions) {//              System.out.println(auction);
//          }//动态查询String auctionName = "周";String auctionStartTime = "";String auctionEndTime = "";String auctionStartPrice = "";StringBuilder hql = new StringBuilder("from Auction as at where 1=1 ");Auction auction = new Auction();if(auctionName != null && !auctionName.equals("")){//:auctionName 指的  按占位符绑定//hibernate 有两种占位符, 一个是? 一个是:对应的属性名 (动态查询用的就是第二个)hql.append("and at.auctionName like :auctionName ");auction.setAuctionName(auctionName+"%");}if(auctionStartTime != null && !auctionStartTime.equals("")){hql.append("and at.auctionStartTime>=:auctionStartTime ");auction.setAuctionStartTime(Timestamp.valueOf(auctionStartTime));}if(auctionEndTime != null && !auctionEndTime.equals("")){hql.append("and at.auctionEndTime>=:auctionEndTime ");auction.setAuctionEndTime(Timestamp.valueOf(auctionEndTime));}if(auctionStartPrice != null && !auctionStartPrice.equals("")){hql.append("and at.auctionStartPrice<=:auctionStartPrice ");auction.setAuctionStartPrice(Double.valueOf(auctionStartPrice));}//HQL = from Auction as at and at.auctionName like :auctionName//:auctionName 这个占位符会去下面的auction中找对应的属性并自动赋值List<Auction> auctions = session.createQuery(hql.toString()).setProperties(auction).list();for (Auction auction2 : auctions) {System.out.println(auction2);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{if(null != session){session.close();}}
}

IDEA 使用 hibernate相关推荐

  1. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  2. Spring中启用Hibernate二级缓存步骤

    1.在applicationContext.xml配置文件中SessionFactory  bean中配置缓存 <!-- 配置会话工厂对象 --> <bean id="se ...

  3. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  4. Hibernate框架第二天

    ### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...

  5. Hibernate **关于hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用**

    之前一直都是使用hibernate4.2.21的我,有一天突然没有使用本地的jar包而是让IDEA自动下载最新版本的hibernate5.2.2之后,发现有几个经常使用的方法报错了. //创建配置对象 ...

  6. 使用hibernate与mysql时数据不能插入的原因及解决办法

    1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...

  7. IntelliJ IDEA下自动生成Hibernate映射文件以及实体类

    转自:https://blog.csdn.net/qq_34197553/article/details/77718925 1.构建项目并添加项目结构配置以及配置初始参数 1.1.如图将基本的架子搭建 ...

  8. Spring Hibernate JPA 联表查询 复杂查询

    (转自:http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html) 今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的 ...

  9. 5 -- Hibernate的基本用法 --2 1 Hibernate 下载和安装

    1. 下载Hibernate压缩包 2. 解压:文件结构 ⊙ documentation : 该路径下存放了Hibernate的相关文档,包括Hibernate的参考文档和API文档等. ⊙ lib ...

  10. Hibernate的一级缓存

    Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibe ...

最新文章

  1. 算法 - 堆排序(C#)
  2. python快捷键设置_UltraEdit搭建Python IDE环境+设置快捷键
  3. linux文件的定义变量的值,linux $变量含义($0,$1,$2,$#,$@) ----linux 基础
  4. 编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。
  5. 历时2年《爱上Android》出版了
  6. Day10_界面叠加处理
  7. 计算机网络教室环境的作用,网络教室环境与多媒体教室环境相比优势在什么地方...
  8. JQuery右下角弹窗广告
  9. C语言:strtok()的用法。
  10. 图片溢出div,超出div解决办法
  11. 软件测试好学习吗?会不会很难入行?
  12. 双显卡同时显示多个显示屏
  13. 服务器运维KPI指标,IT运维包括哪些内容,考核标准是什么
  14. phpcms富文本框上传图片去除水印
  15. 偏光显微镜研究聚合物的球晶形态
  16. 【C++】常用math函数
  17. 微软TTS服务器,微软TTS,Neospeech TTS 简单使用
  18. 《会计学》的会计分录使用逻辑(2020年12月写)
  19. freerdp 解压安装_Linux下安装FreeRDP,连接Windows远程桌面的好软件软件
  20. 刘涛入职阿里,花名刘一刀,担任聚划算官方优选官

热门文章

  1. 190115_Vue下路由History mode导致页面无法渲染的原因
  2. [OpenAirInterface实战-16] :OAI 软件无线电USRP X300/X310硬件详解
  3. pythonpil安装教程_成功安装PIL步骤
  4. 冬幕节成就任务攻略指引
  5. 格林公式求圆并的面积及重心
  6. [导入]北京地区铁路客票代售点列表
  7. 知道一点怎么设直线方程_两点直线方程怎么求
  8. 新型城镇化3.0时代 数据交换是“智慧城市”的核心
  9. C++笔试题目大全(笔试宝典)(转)
  10. 苹果公司开发者账号申请——Apple Developer Program