前提:
建一个数据库
步骤:
一.导包(hibernate\lib\required下10个+日志2个+mysql驱动1个)
二.实体类(提供属性)
三.两个文件(.cfg.xml+.hbm.xml)
四.测试类(使用)
一、导包
1.导入hibernate所用的包
导入hibernate所用的包
2.导入mysql驱动的jar包(驱动的第一次使用)
导入mysql驱动的jar包3.导入两个日志包
日志1
日志2
前提:
idea载入数据库
View → Tool Windows → database → Data Source Properties → My SQL
地址localhost或者127.0.0.1都是本地
把数据库驱动加上(驱动第二次使用)
把数据库驱动加上
二.创建实体类
TestEntity(基本就是getter and setter)
package com;
public class TestentityEntity {
private int Tid;
private String Tname;
public int getTid() {
return Tid;
}
public void setTid(int tid) {
Tid = tid;
}
public String getTname() {
return Tname;
}
public void setTname(String tname) {
Tname = tname;
}
}
三.创建映射文件
TestentityEntity.hbm.xml (idea自己写会出现找不到表名解决方案在后面)
放在src目录下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name代表的是实体类名,table代表的是表名 -->
<class name="com.TestentityEntity" table="entity1">
<!-- name=id代表的是customer类中属性 column=id代表的是table表中的字段 -->
<id name="tid" column="id">
<!-- 主键生成策略 -->
<generator class="native"/>
</id>
<!-- 其他属性使用property标签来映射 -->
<property name="tname" column="username" type="string"/>
</class>
</hibernate-mapping>
第二个文件 hibernate.cfg.xml
<hibernate-configuration>
<!-- 通常,一个session-factory节点代表一个数据库 -->
<session-factory>
<!-- 1. 数据库连接配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property>
<!-- 2. 其他相关配置 -->
<!-- 2.1 显示hibernate在运行时候执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 2.2 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!--3. 加载所有映射-->
<mapping resource="com/TestentityEntity.hbm.xml"/>
</session-factory>
</hibernate-configuration>
加载映射的位置是映射文件.hbm.xml所在位置
四.创建测试类
import com.TestentityEntity;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
public class Test {
public static void main(String[] args) {
//创建对象
TestentityEntity user = new TestentityEntity();
user.setTid(3);
user.setTname("doro");
//获取加载配置管理类
Configuration configuration = new Configuration();
//不给参数就默认加载hibernate.cfg.xml文件,
configuration.configure();
//创建Session工厂对象
SessionFactory factory = configuration.buildSessionFactory();
//得到Session对象
Session session = factory.openSession();
//使用Hibernate操作数据库,都要开启事务,得到事务对象
Transaction transaction = session.getTransaction();
//开启事务
transaction.begin();
//把对象添加到数据库中
session.save(user);
//提交事务
transaction.commit();
//关闭Session
session.close();
}
}
查看数据库
数据成功添加
遇到问题:
dos下net start mysql 打不开mysql
问题原因:mysql服务没有安装。
解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令
然后仍然以管理员的权限 net start mysql 开启Mysql服务了。
1、以管理员的权限 net stop mysql ,关闭mysql服务
2、以管理员的权限 mysqld -remove ,卸载mysql服务
上面说到的映射文件找不到表位置 映射文件找不到表位置
原因:映射文件没匹配上
匹配或 生成之后再修改
数据库创建指令
创建数据库test1 显示数据库创建表
未解决疑问
分不清属性名分不清属性名是tid还是Tid
hbm.xml
在hbm.xml文件中属性名无论是tid还是Tid都能成功。
网友评论