本文转载自网易博客博文:Hibernate实现数据库增删改查
自觉自己写的话不会写得比这篇博文更易懂明了,故转载以便他日查阅,若有不妥,谢谢指出。
增删改查代码:
package com.winwill;
import java.util.List;
import org.hibernate.Query; import org.hibernate.Session;
public class Test {
@SuppressWarnings("unchecked") public static void main(String[] args) { /** * Hibernate 实现数据插入 */ Session session = HibernateUtil.getSessionFactory().getCurrentSession(); user u1 = new user(); u1.setName("zhangsan"); u1.setAge(25); session.beginTransaction(); session.save(u1); session.getTransaction().commit(); /** * Hibernate 实现数据删除 */ session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); user u2 = new user(); u2.setId(53); //删除id=16的项 session.delete(u2); session.getTransaction().commit(); /** * Hibernate 实现数据更新 */ session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); user u3 = (user)session.get(user.class,54); if(u3 != null){ u3.setName("lisi"); u3.setAge(23); session.update(u3); session.getTransaction().commit(); } /** * Hibernate 实现数据查询(HQL查询) */ session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query query = session.createQuery("from user where age=23"); //此处user是类名,而不是数据库的表名,select * 不写 List<user> users = query.list(); for (user user : users) { System.out.println(user.getId()+" "+user.getName()+" "+user.getAge()); } } }
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> <property name="connection.url">jdbc:mysql://localhost:3306/my</property> <property name="connection.username">root</property> <property name="connection.password">sa</property>
<!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property>
<!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property>
<mapping resource="com/winwill/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
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 package="com.winwill"> <class name="user" table="user"> <id name="id"></id> <property name="name"/> <property name="age"/> </class> </hibernate-mapping>