四面八方搜集来的资料整合在一起
前置工作:
1.下载MySQL连接的jar包:
Connector/J 8.0.20(用于与MySQL8.0连接) 下载地址:https://dev.mysql.com/downloads/connector/j/
创建数据库:
1 create database test; 2 3 CREATE TABLE `customer` ( 4 `id` int(11) NOT NULL, 5 `name` varchar(255) DEFAULT NULL, 6 PRIMARY KEY (`id`) 7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1.先建立一个项目,勾选hibernate,同时勾选Create default hibernate configuration and main class并导入library,next,finish。
2.导入MySQL-connect的jar包
File——>Project Structure——>Modules——>最右边点+号——>JARs or directories——>选中刚刚下载并解压出来的jar包——>Apply——>ok
3.与MySQL数据库建立连接
Database——>new——>MySQL——>选择驱动——>输入用户名密码——>测试是否连接成功
4.创建对象关系映射文件
可以通过以下方式自动生成,但我的总是出错,所有选则手动创建
手动:
1 package com.xiaojin; 2 3 public class Customer { 4 private int id; 5 private String name; 6 7 public Customer() { 8 } 9 10 public int getId() { 11 return id; 12 } 13 14 public void setId(int id) { 15 this.id = id; 16 } 17 18 public String getName() { 19 return name; 20 } 21 22 public void setName(String name) { 23 this.name = name; 24 } 25 26 @Override 27 public String toString() { 28 return "Customer{" + 29 "id=" + id + 30 ", name=\'" + name + \'\\'\' + 31 \'}\'; 32 } 33 }
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 5 <hibernate-mapping> 6 <!--name:实体类名,table:对应数据库表名--> 7 <class name="com.xiaojin.Customer" table="customer"> 8 <!-- 配置主键映射 --> 9 <!--name:实体类的属性名,column:数据库表的字段名,type:数据类型--> 10 <id name="id" type="java.lang.Integer"> 11 <column name="id"></column> 12 <!-- 设置主键生成方式 --> 13 <generator class="assigned"></generator> 14 </id> 15 16 <!-- 配置其他属性 --> 17 <!--name:实体类的属性名,column:数据库表的字段名,type:数据类型--> 18 <property name="name" type="java.lang.String"> 19 <column name="name"></column> 20 </property> 21 22 23 </class> 24 </hibernate-mapping>
如果需要设置主键id为自增长模式,则需要设置主键的生成方式为identity(要确认已经在数据库设计时设置了自增长,具体方法可以使用navicat右键表选中设计表,选中主键id勾选自增长)
1 <id name="id" type="java.lang.Integer"> 2 <column name="id"></column> 3 <!-- 设置主键生成方式 --> 4 <generator class="identity"></generator> 5 </id>
5.修改hibernate配置文件(hibernate.cfg.xml)
1 <!-- 2 ~ Hibernate, Relational Persistence for Idiomatic Java 3 ~ 4 ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. 5 ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. 6 --> 7 <!DOCTYPE hibernate-configuration PUBLIC 8 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 9 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 10 <hibernate-configuration> 11 <session-factory> 12 <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> 13 <!--设置时区。MySQL8.0会出现的问题,应在jdbc:mysql://localhost:3306/[数据库名]加上?useSSL=false&serverTimezone=UTC --> 14 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC</property> 15 <!--账号--> 16 <property name="hibernate.connection.username">root</property> 17 <!--密码--> 18 <property name="hibernate.connection.password">root</property> 19 <!-- 设置方言 MySql8.0--> 20 <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property> 21 22 23 <!-- 注册当前session上下文:保证同一线程中获得的session是同一个session 24 <property name="hibernate.current_session_context_class">thread</property> 25 --> 26 27 <!-- 自动建表 --> 28 <property name="hibernate.hbm2ddl.auto">update</property> 29 30 <!-- 显示SQL --> 31 <property name="hibernate.show_sql">true</property> 32 33 <!-- 格式化SQL --> 34 <property name="hibernate.format_sql">true</property> 35 36 37 <!--指定关联的 。hbm。xml文件 --> 38 <mapping resource="com/xiaojin/Customer.hbm.xml"></mapping> 39 <mapping class="com.xiaojin.Customer"/> 40 <mapping resource="com/xiaojin/Customer.hbm.xml"/> 41 </session-factory> 42 </hibernate-configuration>
6.创建测试类
1 package com.test; 2 import com.xiaojin.Customer; 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 8 9 public class Test { 10 11 public static void main(String[] args) { 12 Configuration conf=new Configuration(); 13 conf.configure("hibernate.cfg.xml"); 14 SessionFactory sessionFactory=conf.buildSessionFactory(); 15 Session session=sessionFactory.openSession();//创建Session 16 Transaction tx=session.beginTransaction();//开启事务 17 //上面这个是固定的必要的 18 19 Customer c=new Customer(); 20 c.setName("aa"); 21 c.setId(5); 22 23 session.save(c);//执行保存 24 tx.commit();//提交事务 25 26 //关闭 27 session.close(); 28 sessionFactory.close(); 29 30 } 31 }
最后运行Test.java就会发现customer表中成功添加了信息