Hibernate的基本CRUD

来源:互联网 发布:网络吃火锅是什么意思 编辑:程序博客网 时间:2024/06/05 06:41
package cn.itcast.b_dao;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Transaction;import cn.itcast.a_helloworld.User;public class UserDao {/** * 保存 *  * @param user *            用户 */public void save(User user) {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 开始事务// 保存session.save(user);tx.commit();// 提交事务} catch (RuntimeException e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}/** * 更新 *  * @param user *            用户 */public void update(User user) {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 操作session.update(user);tx.commit();// 提交事务} catch (RuntimeException e) {tx.rollback();// 回棍事务throw e;} finally {session.close();// 释放资源}}/** * 删除 *  * @param id *            根据id删除数据 */public void delete(Integer id) {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 操作Object user = session.get(User.class, id);// 要先获取到这个对象session.delete(user);// 删除的是实体对象tx.commit();// 提交事务} catch (RuntimeException e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}/** * 根据id查询一个User数据 *  * @param id *            根据id查询数据 * @return 返回一条User数据 */public User getById(Integer id) {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 打开事务// 操作User user = (User) session.get(User.class, id);tx.commit();// 提交事务return user;} catch (RuntimeException e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源;}}/** * 查询所有用户 *  * @return 返回所有用户 */@SuppressWarnings("unchecked")public List<User> findAll() {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 开始事务// 方式一: 使用HQL查询// List<User> list = session.createQuery(//// "FROM User WHERE id=5 order by id")//// .list();// 方式二:使用Criteria查询Criteria criteria = session.createCriteria(User.class);// criteria.add(Restrictions.eq("id", 5));// criteria.addOrder(Order.desc("id"));List<User> list = criteria.list();tx.commit();// 提交事务return list;} catch (RuntimeException e) {tx.rollback();// session.getTransaction().rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}/** * * 分页的查询数据列表 *  * @param firstResult *            从结果列表中那个索引开始取数据 * @param maxResult *            最多取多少条数据 * @return 一页的数据列表 + 总计录数 *//** * @param firstResult * @param maxResult * @return */@SuppressWarnings("unchecked")public QueryResult findAll(Integer firstResult, Integer maxResult) {Session session = HibernateUtils.opensession();Transaction tx = null;try {tx = session.beginTransaction();// 开始事务// 查询一页的数据列表// 方式1// Query query = session.createQuery("FROM User");// query.setFirstResult(firstResult);// query.setMaxResults(maxResult);// List<User> list = query.list();// 操作// 方式2List<User> list = session.createQuery(//"FROM User")//.setFirstResult(firstResult)//.setMaxResults(maxResult)//.list();// 查询总记录数Long count = (Long) session.createQuery(//"SELECT COUNT(*) FROM User")//.uniqueResult();tx.commit();// 提交事务// 返回结果return new QueryResult(count.intValue(), list);} catch (RuntimeException e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}}


package cn.itcast.b_dao;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;public class HibernateUtils {// SessionFactory全局只需要一个就行了private static SessionFactory sessionFactory;static {// Configuration cfg = new Configuration();// cfg.configure();// 读取默认配置文件(hibernate.cfg.xml)// // cfg.configure("hibernate.cfg.xml");//读取指定位置的配置文件// sessionFactory = cfg.buildSessionFactory();//生成会话工厂//初始化SessionFactorysessionFactory = new Configuration()//.configure()//.buildSessionFactory();}/** * 获取全局唯一的SessionFactory *  * @return 返回SessionFactory */public static SessionFactory getSessionFactory() {return sessionFactory;}/** * 从全局唯一的SessionFactory中打开一个Session *  * @return 返回Session */public static Session opensession() {return sessionFactory.openSession();}}

package cn.itcast.b_dao;import java.util.List;/** * 查询结果分页 *  * @author 风清杨 * @version V1.0 */@SuppressWarnings("rawtypes")public class QueryResult {private int count;// 总记录数private List list;// 一页的数据public QueryResult(int count, List list) {this.count = count;this.list = list;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public List getList() {return list;}public void setList(List list) {this.list = list;}}

User.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- 导入包 --><hibernate-mapping package="cn.itcast.a_helloworld"><!-- 类名 --><class name="User" table="t_user"><!-- id int类型 --><id name="id" type="int" column="id">            <!-- 自增长 -->            <generator class="native"/></id><property name="name" type="string"  column="name"/></class></hibernate-mapping>

Hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory name="foo"><!-- 配置数据库信息 --><!-- 方言 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- mysql连接配置 --><property name="connection.url">jdbc:mysql://localhost:3306/hibernate_20170423</property><!-- 配置连接mysql驱动 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql用户名 --><property name="connection.username">root</property><!-- mysql密码 --><property name="hibernate.connection.password">root</property><!-- 其它配置 --><!-- 显示生成的SQL语句 --><property name="hibernate.show_sql">true</property><!-- 格式化SQL语 --><property name="hibernate.format_sql">false</property><!-- create:先删除,再创建。 update:如果表不存在就创建,不一样就更新,一样就什么都不做。 create-dorp:初始化时创建表,SessionFactory执行close()时删除表。 validate:验证表结构是否一致,如果不一致,就抛异常。 --><property name="hbm2ddl.auto">update</property><!-- 导入映射文件 --><mapping resource="cn/itcast/c_hbm_property/User.hbm.xml" /></session-factory></hibernate-configuration>






0 0