Hibernate(5.3.7) 增删改查
-
项目结构
-
创建实体类
Student.java
public class Student implements Serializable { private int id; private String name; private int age; ...//getter setter }
-
创建映射
Student.hbm.xml
<?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> <class name="learn.hibernate.entity.Student" table="stu_tab" > <id name="id" column="stu_id"> <generator class="native"/> </id> <property name="name" column="stu_name"/> <property name="age" column="stu_age"/> </class> </hibernate-mapping>
-
配置
hibernate.cfg.xml
<hibernate-configuration> <session-factory> <!--配置数据库连接--> <property name="connection.url">jdbc:mysql://localhost:3306/test</property> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="connection.username">root</property> <property name="connection.password">123</property> <!--显示sql语句--> <property name="show_sql">true</property> <property name="format_sql">true</property> <!--设置映射--> <mapping resource="learn/hibernate/entity/Student.hbm.xml"/> <!-- DB schema will be updated if needed --> <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration>
-
测试类
-
增
@Test public void add() { Configuration cfg = new Configuration(); cfg.configure("hibernate.cfg.xml"); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction t = session.beginTransaction(); Student student = new Student(); student.setName("a"); student.setAge(1); try{ session.save(student); t.commit(); }catch (Exception e){ e.printStackTrace(); t.rollback(); }finally { session.close(); } }
Hibernate: insert into stu_tab (stu_name, stu_age) values (?, ?)
-
单条记录查
@Test public void query() { Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction t = session.beginTransaction(); Student student = session.get(Student.class, 1); t.commit(); session.close(); System.out.println("successfully query: name[" + student.getName() + "]。"); }
Hibernate: select student0_.stu_id as stu_id1_0_0_, student0_.stu_name as stu_name2_0_0_, student0_.stu_age as stu_age3_0_0_ from stu_tab student0_ where student0_.stu_id=? successfully query: name[a]。
-
列表查
@Test public void queryList() { Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction t = session.beginTransaction(); @SuppressWarnings("unchecked") List<Student> students = session.createQuery("from Student").getResultList(); int i = 0; for (Student student :students ) { System.out.println("queryUserList[" + i + "] name :[" + student.getName() + "]"); i++; } t.commit(); session.close(); }
Hibernate: select student0_.stu_id as stu_id1_0_0_, student0_.stu_name as stu_name2_0_0_, student0_.stu_age as stu_age3_0_0_ from stu_tab student0_ where student0_.stu_id=? successfully query: name[a]
-
删除
@Test public void delete() { Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction t = session.beginTransaction(); Student student = new Student(); student.setId(2); session.delete(student); t.commit(); session.close(); }
Hibernate: delete from stu_tab where stu_id=?
-
更新
@Test public void update() { Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction t = session.beginTransaction(); Student student = new Student(); student.setId(3); student.setName("s"); student.setAge(19); session.update(student); t.commit(); session.close(); }
Hibernate: update stu_tab set stu_name=?, stu_age=? where stu_id=?
-