目录

  • 1. hibernate框架
  • 2. 配置文件实体mapper和hibernate.cfg.xml
  • 3. 操作单表增删改查

1. hibernate框架

数据持久层的框架
功能定位:专门用来访问数据库,对数据库进行增删改查操作
Hibernate是一个ORM框架 MyBatis   MyBatisPlus、JPA(springdata jpa)
ORM:Object Relational Mapping(对象关系映射)特点
1.  上手较难
2.  灵活度低
3.  全自动(不写sql语句操作数据库)

2. 配置文件实体mapper和hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-mapping><!-- 配置stu info 实体类与表的映射关系 --><!-- 类的全路径 和 表名 --><class name="cn.bitqian.entity.StuInfo" table="stu_info"><!-- 主键  --><!-- name 为属性 --><!-- id 为列 --><id name="sid" column="id"><!-- 配置主键生成策略 --><generator class="native"></generator></id><!-- 可以配置列的长度 --><property name="name" column="name"></property><property name="birthday" column="birth_day"></property></class><!--     <class name="cn.bitqian.entity.User" table="users2"><id name="userId" column="user_id">主键生成策略<generator class="native"></generator></id>实体属性与列的映射关系!<property name="userName" column="user_name"></property><property name="userPasswrod" column="user_password"></property><property name="userGender" column="user_gender"></property><property name="userAddress" column="user_address"></property><property name="registerDate" column="register_date"></property></class> --></hibernate-mapping>
<?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><!-- mysql 5.x 版本sql 连接配置 --><property name="connection.url">jdbc:mysql://localhost:3306/ssh_study</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.username">root</property><property name="connection.password">123456</property><!-- 数据库方言 mysql --><property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><!-- 在命令执行时是否显示sql语句 --><property name="show_sql">true</property><property name="format_sql">true</property><!-- 用于更新表的变化 --><property name="hbm2ddl.auto">update</property><!-- 引用实体类 与 数据库表的 映射文件 --><mapping resource="cn/bitqian/entity/stuInfo.hbm.xml"/><!-- 引用user映射文件 --><mapping resource="cn/bitqian/entity/user.hbm.xml"/></session-factory></hibernate-configuration>

驱动包注意

Mysql 5driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mydatabaseMysql 8.0.15driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&需转译成&amp;

3. 操作单表增删改查

  • 实体类
package cn.bitqian.entity;import java.io.Serializable;
import java.util.Date;public class StuInfo implements Serializable {/*** 唯一 serial id* 用于序列化和返序列化的校验*/private static final long serialVersionUID = -3784274218883718429L;private Integer sid;private String name;private Date birthday;// 省略set/get
}
  • SessionFactory
package cn.bitqian.dao;import java.io.Serializable;
import java.util.Date;import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
//import org.hibernate.dialect.MySQL5InnoDBDialect;import cn.bitqian.entity.StuInfo;/*** get / load distinct* single table curd * @author echo lovely**/
public class Test1 {public static void main(String[] args) {test1();}/*** stuInfo 表测试*/static void test1() {// 1. 读取配置文件Configuration config = new Configuration().configure();// 2. 通过配置文件 获取 sessionFactorySessionFactory sessionFactory = config.buildSessionFactory();// 3. 通过session工厂获取sessionSession session = sessionFactory.openSession();// 4. 开启事务session.beginTransaction();Object stuObj = null;// 数据库操作try {// 新增/*StuInfo stu = new StuInfo();stu.setName("jack");stu.setBirthday(new Date());// 返回新增主键值Serializable primaryValue = session.save(stu);System.out.println(primaryValue);*/// 修改/*StuInfo stu = new StuInfo();stu.setSid(1);stu.setName("rose");stu.setBirthday(new Date());session.update(stu);System.out.println("修改成功...");*/// 删除/*StuInfo stu = new StuInfo();stu.setSid(1);session.delete(stu);*/// 单个查询// load 懒加载 和 get的区别// load 查询 延时加载System.out.println("load 查询前");stuObj = session.load(StuInfo.class, 1);System.out.println("load 查询后");if (stuObj != null) {System.out.println("使用对象");StuInfo stu = (StuInfo) stuObj;System.out.println(stuObj + "\n转型后的对象: \n" + stu);}System.out.println("null stu by load:");// load查询不存在的// org.hibernate.ObjectNotFoundException: No row with the given identifier existsSystem.out.println(session.load(StuInfo.class, 2));// get 查询 即时加载/*System.out.println("get 查询前:");stuObj = session.get(StuInfo.class, 1);System.out.println("get 查询后:");*//*** 延时加载和即时加载的区别:*     相同点:*        1. 都能查询单条数据,在Session关闭后不能再查询*      2. 都存在缓存*  不同点:*   1. 即时加载不管数据是否存在,都会返回结果,返回null或者数据。*       而延时load加载查不到数据时报错。*      2. 延时load加载只能在 你使用数据时,发送查询请求*   */// 提交事务session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {// 关闭sessionsession.close();// 关闭session工厂sessionFactory.close();}// hibernate中的缓存System.out.println(stuObj);}}

hibernate基于单表curd相关推荐

  1. 【ORACLE 高可用】 ORACLE STREAM 基于单表的流复制 配置 案例

    ORACLE STREAM 演示基于单表的流复制案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 ...

  2. 通用BaseController,适用于通用mapper,减少80%单表CURD

    上一次写了一篇通用mapper的BaseService,上次的BaseService就是为了当前的Controller做铺垫. 这次的通用Controller是解决重复的劳动而改写的,只要继承该Con ...

  3. Ruoyi Vue实现单表CURD

    1.在若依的数据库中创建数据库表 新建user表 设置deleteUser属性(用于逻辑删除) 2.在Ruoyi Vue中创建并编写CSDM文件 Controller层 package com.ruo ...

  4. hibernate入门二之单表操作

    友情提醒:以下所有的操作都是在hibernate入门一的基础上操作的,参考链接:https://www.cnblogs.com/lindaiyu/p/10990525.html 单一主键 assign ...

  5. mybatis --入门 单表增删改查-curd

    目录 1. mybatis 环境搭建 2. 实体类映射文件配置(写sql) 3. mybatis核心配置文件 (环境配置) 4. 测试 mybatis document https://mybatis ...

  6. mysql 优化表 3000万_mysql优化:专题三、关于单表查询,可以这么优化

    mysql优化:专题三.关于单表查询,可以这么优化 作者:PHPYuan 时间:2018-10-18 03:41:26 上篇讲解了「mysql优化专题」90%程序员都会忽略的增删改优化(2),相信大家 ...

  7. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...

    前面讲了SQL优化以及索引的使用.设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述多表设计基本原则(结合真实的生产环境的取舍来讲述). 文章结构:(1)单表设计与优化: ...

  8. Hibernate中的HQL的基本常用小例子,单表查询与多表查询

    <span style="font-size:24px;color:#3366ff;">本文章实现HQL的以下功能:</span> /*** hql语法:* ...

  9. pg插入执行成功但是没有数据_pg_lightool基于basebackup的单表恢复和块恢复

    作者简介 李传成: 瀚高软件内核研发工程师,主要研究方向为数据库的备份和恢复,对wal日志的原理和应用有较深的理解.自研了wal日志解析工具walminer.pg块恢复工具pg_lightool. 背 ...

最新文章

  1. Java jdk 安装笔记
  2. 计算机内存不足提示栻框,【计算机】计算机文化基础.ppt
  3. Linux知识积累(8)卸载安装jdk
  4. linux+awk忽略tab符号,awk 如何避免文本中出现特殊符号的影响?
  5. POJ 3189 Steady Cow Assignment
  6. attention :为什么要用attention机制
  7. 用三方做的豆瓣电影页面
  8. 三菱GXWorks2 程序写入CPU/从CPU读取程序
  9. 外挂技术之-检测和反检测
  10. 针对HTTPS网页打开缓慢或者打不开的问题
  11. socket编程常用函数
  12. steam使用技巧2
  13. SQLmap注入学习实战 —— dvwa 从low到impossble
  14. 虚拟机装vpn,主机通过虚拟机的vpn代理实现vpn共享
  15. ios 高德获取定位_概述-iOS 定位SDK | 高德地图API
  16. [转]一个人生活,如何摆脱孤独提升幸福感?
  17. 学生信息管理系统V1.0
  18. App怎样提高推广转化率
  19. Arduino与LU-ASR01语音识别模块的双向串口通信实现
  20. 小米路由器3G建站折腾笔记4 - 安装opkg和onmp

热门文章

  1. Oracle从小白到大牛的刷题之路(建议收藏学习)
  2. CSS中设置border属性为0与none的区别
  3. 数据结构算法入门--一文了解什么是复杂度
  4. css清除浮动的几种方法_CSS 分享几种传统布局方法[上]
  5. idea html ajax,在 IntelliJ IDEA 8.1中编写一个ajax jquery实例,取不到页面上的值
  6. android管理员和普通用户登录,asp登录页如何区别管理员和普通用户,登录后跳转到不同页面?...
  7. vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...
  8. Java写入的常用技巧
  9. 输入 3 个正数,判断能否构成一个三角形。
  10. sql 查询优化小计