Hibernate框架:增删改查

Hibernate框架:增删改查

步骤:

1.环境准备:

2.创建项目:

首先,打开eclipse新建一个javaweb项目,然后将 hibernate-release-5.2.10.Final解压文件夹的hibernate-release-5.2.10.Final\lib\required下面的所有jar包,全部拷贝到你创建的javaweb工程下的lib目录下,再将mysql-connector-java-5.1.37-bin.jar也一同拷贝到javaweb的lib下。如图:
![image](D:/Desktop/截图/图像 005.jpg)

3.创建数据库:

打开navicat,创建student表,注意设置id为主键且id自增:

CREATE TABLE `student` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `age` int(3) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

如图:
![image](D:/Desktop/截图/图像 007.jpg)

4.配置文件操作:

在项目的src目录下创建一个hibernate.cfg.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>
    
    	<!-- Database connection settings 数据库连接设置-->
        <!-- 驱动类 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- url地址 -->        
        <property name="connection.url">jdbc:mysql://localhost/hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property> 
              
        <property name="connection.pool_size">1</property>  
        
        <!-- SQL dialect  (SQL 方言) -->      
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        
        <!--在控制台打印后台的SQL语句 -->
        <property name="show_sql">true</property>
        
        <!--在控制台打印后台的SQL语句 -->
        <property name="show_sql">true</property>
        
        <!-- 自动生成student表 -->
        <property name="hbm2ddl.auto">update</property>
        
        <!-- 关联小配置 -->
        <mapping resource="com/hibernate/model/Student.hbm.xml"/>
        
    </session-factory>
    
</hibernate-configuration>

创建一个Student类:

package com.hibernate.model;

public class Student {

	private int id;
	private String name;
	private int age;

	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";
	}
}

最后再创建一个student表的映射文件Student.hbm.xml,放在与student同一个包下:

<?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 package="com.hibernate.model"><!-- 这里的package记得要写对啊。要不然运行也会出错的 -->
    <class name="Student" table="student"><!-- 如果表名跟类名一个样的话,那么table属性可以不写 -->
        <id name="id"></id>
        <property name="name"></property>
        <property name="age"></property>
    </class>
</hibernate-mapping>

5.代码实现:增删改查:

增加:
package com.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.hibernate.model.Student;

public class StudentTestAdd {
	public static void main(String[] args) {
		Student s = new Student();
		s.setId(3);
		s.setAge(21);
		s.setName("李四");

		Configuration cfg = new Configuration();
		SessionFactory sf = cfg.configure().buildSessionFactory();
		Session session = sf.openSession();

		session.beginTransaction();
		session.save(s);
		session.getTransaction().commit();
		session.close();
		sf.close();
	}

}

删除:
package com.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.hibernate.model.Student;

public class StudentTestDelete {

	public static void main(String[] args) {

		Configuration cfg = new Configuration();
		SessionFactory sf = cfg.configure().buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();

		// 删除主键为1的学生
		Student student = (Student) session.get(Student.class, Integer.valueOf(1));
		session.delete(student);

		session.getTransaction().commit();
		session.close();
		sf.close();
		System.out.println("删除成功");
	}

}

修改:
package com.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.hibernate.model.Student;

public class StudentTestModify {

	public static void main(String[] args) {

		Configuration cfg = new Configuration();
		SessionFactory sf = cfg.configure().buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();
		// 修改主键为2的学生
		Student student = (Student) session.get(Student.class, Integer.valueOf(2));
		student.setName("张三2");
		session.save(student);

		session.getTransaction().commit();
		session.close();
		sf.close();
		System.out.println("修改成功");
	}

}

查询:
package com.hibernate.test;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;

import com.hibernate.model.Student;

public class StudentTestQuery {

	public static void main(String[] args) {
		Configuration cfg = new Configuration();
		SessionFactory sf = cfg.configure().buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();

		// 查找student表里的所有的学生
		String hql = "from Student";
		Query<Student> query = session.createQuery(hql);
		List<Student> studentList = query.list();
		for (Student student : studentList) {
			System.out.println(student);
		}

		session.getTransaction().commit();
		session.close();
		sf.close();
		System.out.println("查找成功");
	}

}

6.运行效果

最终项目的文件目录如下:
![image](D:/Desktop/截图/图像 008.jpg)

posted @ 2018-03-11 16:31  hovinghuang南国子墨  阅读(270)  评论(0)    收藏  举报