• Hibernate的增删改查


    工程结构:

    代码:

    package com.zk.domain;
    
    public class Student {
    
        private int id;
        private String name;
        private int age;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
        
    }
    <?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> 
        <class name="com.zk.domain.Student" table="t_student"> 
            <id name="id" column="id"> 
                <generator class="identity" /> 
            </id> 
            <property name="name" column="name" /> 
            <property name="age" column="age" /> 
        </class> 
    </hibernate-mapping> 
    package com.zk.util;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtil {
    
        private static SessionFactory sessionFactory = buildSessionFactory();
    
        public static SessionFactory buildSessionFactory() {
            
            return new Configuration().configure().buildSessionFactory();
        }
        
        public static Session getSession(){
            return sessionFactory.getCurrentSession();
        }
    }
    package com.zk.main;
    
    import java.util.List;
    
    import org.hibernate.Hibernate;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.metamodel.binding.HibernateTypeDescriptor;
    import org.hibernate.type.Type;
    
    import com.zk.domain.Student;
    import com.zk.util.HibernateUtil;
    
    public class HibernateTest {
    
        public static void main(String[] args) {
            Student student = new Student();//student属于瞬时状态
            student.setName("zhaoliu");
            student.setAge(29);
            
            //增加
            addStudent(student);
            
    
            //修改
            student.setAge(30);//student属于持久化状态
            HibernateUtil.getSession().beginTransaction();
            HibernateUtil.getSession().update(student);
            HibernateUtil.getSession().getTransaction().commit();
            
            
            Session session = HibernateUtil.getSession();
            session.beginTransaction();
            
            //查询所有元素
            List<Student> students = session.createQuery("from Student").list();
            for (Student s : students) {
                System.out.println("name="+s.getName()+";age="+s.getAge());
            }
            
            //查询某个元素
            Query query = session.createQuery("from Student as student where student.id=:id");
            query.setParameter("id", 1);
            System.out.println(((Student)(query.uniqueResult())).getName());
            
            //查询数据
            Long count = ((Long)(session.createQuery("select count(*) from Student").uniqueResult())).longValue();
            System.out.println("count="+count);
            
    
            //删除
            Query deleteQuery = session.createQuery("delete Student as s where s.name=:name");
            deleteQuery.setString("name", "zhangsan");
            int deleteCount = deleteQuery.executeUpdate();
            System.out.println("deleted count="+deleteCount);
            
            session.getTransaction().commit();
        }
        
        public static void addStudent(Student student){
            Session session=null;
            Transaction ts = null;
            try {
                session=HibernateUtil.getSession();
                ts = session.beginTransaction();
                session.save(student);
                session.disconnect();
                ts.commit();
            } catch (Exception e) {
                if(ts!=null)
                    ts.rollback();
                e.printStackTrace();
            }finally{
                if(session!=null&&session.isOpen())
                    session.close();
            }
            
            
        }
        
    }
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
      <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
    
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
    
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</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.internal.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/zk/domain/Student.hbm.xml"/>
      </session-factory>
    </hibernate-configuration>
  • 相关阅读:
    SharePoint 2010学习笔记之一:创建”最新动态”WebPart
    IE6 Png 图片透明
    C# Url 过滤特殊字符
    委托的几个实例用法
    MVC中Code First编程一些小技巧
    Javascript 学习
    NET下XML的读写操作
    C#位运算讲解与示例[转]
    DB2导入导出命令(工作中使用)
    上海长期招聘c#/c++软件工程师
  • 原文地址:https://www.cnblogs.com/beenupper/p/2762849.html
Copyright © 2020-2023  润新知