解决不了bug,那就解决自己,配置SSH代码,如果对你有帮助,点赞关注,成为朋友。
第一步:安装数据库【我的是MySQL5.7】
安装好后–建表
1):建一个数据库[salary]
create database salary;
2)建表并插入数据
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for teacherinfo
-- ----------------------------
DROP TABLE IF EXISTS `teacherinfo`;
CREATE TABLE `teacherinfo` (
`tno` int(5) NOT NULL,
`teachername` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(16) NULL DEFAULT NULL,
`sex` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`title` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`tno`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of teacherinfo
-- ----------------------------
INSERT INTO `teacherinfo` VALUES (1, '张三', 40, '女', '讲师');
INSERT INTO `teacherinfo` VALUES (2, '李四', 48, '女', '教授');
INSERT INTO `teacherinfo` VALUES (3, '王五', 39, '男', '副教授');
INSERT INTO `teacherinfo` VALUES (4, '赵六', 55, '男', '教授');
INSERT INTO `teacherinfo` VALUES (5, '孙七', 50, '女', '副教授');
SET FOREIGN_KEY_CHECKS = 1;
对数据库的命令有不熟悉的可参考数据库的命令
建好表后:
第二步:在eclipse中新建项目Hibernate1并导入jar包
这些jar包放在微信公众号:新白者,回复hibernate,可以领取hibernate的jar包,回复数据库,可以领取连接数据的jar包
放在lib下:
第三步:数据源配置
在Eclipse菜单项中选择Windows->Show View->Data Source Explorer
点击->新建–选择MySQL–next–填写信息–点击测试[Test Connection]–弹出Ping succeeded【说明测试成功】
第四步:在Eclipse中进行Hibernate数据库连接配置与Hibernate.xml文件配置
1)、安装hibernate插件
help–Eclipse Marketplace–find【输入hibernate tools】–安装
安装好后出现这个界面:
选择自己需要的就行,不要全勾上,不然速度就慢了,静等安装。
然后发现报错>
An error occurred while collecting items to be installed session
context was:(profile=epp.package.jee,
phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=,
action=).
解决了几个小时,网上的办法都试了还是没能解决,被这个bug弄烦了,我就放弃了,不用这个hibernate tools,自己一个个敲代码。
也遇到了报错,一步步分析出来了,配置hibernate所遇到的几个报错,分别解析如何解决
第一步:数据库还是要建表,工具法和代码法(上面有)
第二步:新建一个名为hibernate
第三步:导入jar包
这些jar包这个在微信公众号:新白者,回复hibernate,可以领取hibernate的jar包,回复数据库,可以领取连接数据的jar包
第四步:新建实体类和映射对象
1)、新建一个com.lwc.entity的包[这个自己随便的取名字,但是有个命名的习惯]
2)、新建一个实体类,为user的实体类
package com.lwc.entity;
public class user {
public String tno;
public String teachername;
public Integer age;
public String sex;
public String title;
public String getTno() {
return tno;
}
public void setTno(String tno) {
this.tno = tno;
}
public String getTeachername() {
return teachername;
}
public void setTeachername(String teachername) {
this.teachername = teachername;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "Teacherinfo [tno=" + tno + ", teachername=" + teachername + ", age=" + age + ", sex=" + sex + ", title="
+ title + "]";
}
}
3)、新建user.hbm.xml映射类
在com.lwc.entity下新建
然后找到other(其它),在xml里点击next(下一步)
输入user.hbm.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">
<hibernate-mapping>
<!-- 1、配置类和表对应 class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.lwc.entity.user" table="teacherinfo">
<!-- 2、配置实体类id和表的id对应 hibernate要求实体类有一个 属性唯一值 hibernate要求表有字段作为唯一值 -->
<!-- id标签 name属性:实体类里面id属性名称 column属性:生成的表的字段名称 -->
<id name="tno" column="tno">
<!-- native:生成表的id值就是主键自动增长 -->
<!-- <generator class="native"></generator> --></id>
<property name="teachername" column="teachername"> </property>
<property name="age" column="age"> </property>
<property name="sex" column="sex"> </property>
<property name="title" column="title"> </property>
</class>
</hibernate-mapping>
第五步:新建核心配置文件hibernate.cfg.xml
同理在xml里新建
<?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">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/salary?characterEncoding=UTF-8&useSSL=false</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="com/lwc/entity/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
【注意】:
第六步:编写测试类
1)、新建一个包com.lwc.test
2)、新建一个类hibernateTest
package com.lwc.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.jupiter.api.Test;
import com.lwc.entity.user;
public class hibernateTest {
@Test
public void testAdd() {
Configuration cfg=new Configuration();
cfg.configure();
SessionFactory sessionFactory=cfg.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
user us = new user();
us.setTno("12");
us.setTeachername("新白");
us.setAge(18);
us.setSex("男");
us.setTitle("教授");
session.save(us);
tx.commit();
session.close();
sessionFactory.close();
}
}
第七步:运行
在hibernateTest类中右击—运行方式—JUnit测试