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
- Hibernate的基本CRUD
- Hibernate(基本CRUD-主键的生成策略)
- Eclipese搭建Hibernate框架,基本的CRUD
- hibernate 基本的CRUD增删改查方法
- hibernate 的CRUD
- hibernate的crud操作
- hibernate的CRUD操作
- hibernate的CRUD操作
- Hibernate的CRUD操作
- hibernate的crud操作
- Hibernate的CRUD
- hibernate的CRUD
- hibernate简单的crud
- Hibernate实现简单的CRUD
- Hibernate之完整的CRUD
- Hibernate对象的CRUD操作
- Hibernate-简单的crud案例
- Hibernate 入门------简单的CRUD
- CF#804 B. Minimum number of steps(字符串,思维)
- FL2440——Gadget驱动实现模拟U盘功能
- Java学习笔记---多线程同步的五种方法
- 弱引用、虚引用、finalize实践,及它们的顺序
- centos安装中文输入法
- Hibernate的基本CRUD
- 另一个.lua文件中的全局变量可以被其它.lua文件读取
- java笔记--关于线程同步(7种同步方式)
- 实现定位服务的两种方法
- 深度学习与人脸识别系列(3)__利用caffe训练深度学习模型
- Codeforces Round #411 (Div. 2) 题解
- 30多年的程序员生涯总结
- W大姐的面试题
- Hive分析函数row_number()