• Rhythmk 学习 Hibernate 01


    1、环境:

       Maven :3.1.1

       开发工具:Spring Tool Suite

       数据库 : Mysql  5.6

    2、项目文件结构

    文件代码:

    2.1 、pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>hibernate</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>4.3.5.Final</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.30</version>
            </dependency>
    
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>

     2.2 、HibernateUtil.java

      

    package com.rhythmk.hibernate01;
    
    import javax.imageio.spi.ServiceRegistry;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistryBuilder;
    
    
    /*
     *  参考 URL:
     *  http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html_single/
     * */
    public class HibernateUtil {
    	// By : rhythmk.cnblogs.com
    	 private static final SessionFactory sessionFactory = buildSessionFactory();
    
    	    private static   SessionFactory buildSessionFactory() {
    	        try {
    
    	        	Configuration configuration=new Configuration().configure();
    	        	
    	          return   configuration.buildSessionFactory(new ServiceRegistryBuilder().applySettings(configuration.getProperties()).build());
    	        
    	          
    	        }
    	        catch (Throwable ex) {
    	           
    	            System.err.println("Initial SessionFactory creation failed." + ex);
    	            throw new ExceptionInInitializerError(ex);
    	        }
    		
    	    }
    
    	    public static SessionFactory getSessionFactory() {
    	        return sessionFactory;
    	    }
    }
    

      

    2.3、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">
    
    <!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration>
    
        <session-factory>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/shishuocms</property>
            <property name="connection.username">root</property>
            <property name="connection.password">wangkun</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property>
            <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 -->
            <property name="hibernate.show_sql">true </property>
            <mapping resource="com/rhythmk/model/user.hbm.xml" />
        </session-factory>
    
    </hibernate-configuration>

    2.4 User.java

    package com.rhythmk.model;
    
    import java.util.Date;
    
    
    
    public class User {
    	public Integer getUserId() {
    		return userId;
    	}
    
    	public void setUserId(Integer userId) {
    		this.userId = userId;
    	}
    
    	public Integer getOpenId() {
    		return openId;
    	}
    
    	public void setOpenId(Integer openId) {
    		this.openId = openId;
    	}
       
    	
    	
    	@Override
    	public String toString() {
    		
    		return "User [userId=" + userId + ", openId=" + openId + ", type="
    				+ type + ", name=" + name + ", createTime=" + createTime + "]";
    	}
    
    	public String getType() {
    		return type;
    	}
    
    	public void setType(String type) {
    		this.type = type;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Date getCreateTime() {
    		return createTime;
    	}
    
    	public void setCreateTime(Date createTime) {
    		this.createTime = createTime;
    	}
    
    	public Integer userId;
    	public Integer openId;
    	public String type;
    	public String name;
    	public Date createTime;
    }
    

      2.5  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>
        <class name="com.rhythmk.model.User" table="user">
            <id name="userId" type="int">
                <column name="userId" />
                <generator class="native" />
            </id>
            <property name="openId" type="int">
                <column name="openId" not-null="true" />
            </property>
            <property name="type" type="string">
                <column name="type" not-null="true" />
            </property>
            <property name="name" type="string">
                <column name="name" length="45" not-null="true" />
            </property>
            <property name="createTime" type="timestamp">
                <column name="createTime" not-null="true" />
            </property>
    
        </class>
    </hibernate-mapping>

    3、测试代码(hibernatedemo1.java):

       插入:

       

    @Test
    	public void InsertUser() {
    
    		SessionFactory sessionfac = HibernateUtil.getSessionFactory();
    
    		Session session = null;
    		org.hibernate.Transaction tran = null;
    		try {
    			sessionfac.openSession();
    			User entity = new User();
    			tran = session.beginTransaction();
    			entity.setType("管理员");
    			entity.setName("rhythmk");
    			entity.setOpenId(1);
    			entity.setCreateTime(new Date());
    			session.save(entity);
    			tran.commit();
    
    			System.out.println("Insert into OK!");
    		} catch (Exception e) {
    			if (tran != null) {
    				tran.rollback();
    			}
    			e.printStackTrace();
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    
    	}
    

      修改:

      

    	@Test
    	public void UpdateUser() {
    		Session session = null;
    		org.hibernate.Transaction tran = null;
    		try {
    			session = HibernateUtil.getSessionFactory().openSession();
    			tran = session.beginTransaction();
    			User entity = (User) session.load(User.class, 2);
    			entity.setName("Update");
    			session.save(entity);
    			tran.commit();
    
    			entity = (User) session.load(User.class, 2);
    
    			System.out.println(entity.toString());
    
    		} catch (Exception e) {
    			if (tran != null) {
    				tran.rollback();
    			}
    			// TODO: handle exception
    			e.printStackTrace();
    
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    	}
    

      删除:

    @Test
    	public void DelUser() {
    
    		Session session = null;
    		org.hibernate.Transaction tran = null;
    		try {
    			session = HibernateUtil.getSessionFactory().openSession();
    			tran = session.beginTransaction();
    			Object obj = session.load(User.class, 4);
    			User entity = null;
    			if (obj != null) {
    				entity = (User) obj;
    			}
    
    			if (entity != null) {
    				session.delete(entity);
    				System.out.println("删除成功!");
    				tran.commit();
    			}
    
    		} catch (Exception e) {
    			if (tran != null) {
    				tran.rollback();
    			}
    			// TODO: handle exception
    			e.printStackTrace();
    
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    
    	}
    

      单对象查询

    @Test
    	public void SelectUser() {
    		Session session = null;
    		try {
    			session = HibernateUtil.getSessionFactory().openSession();
    			User entity = (User) session.load(User.class, 2);
    			System.out.println(entity.toString());
    
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    
    	}
    

     List查询

      

    @Test
    	public void SelectListUser() {
    		Session session = null;
    		try {
    			session = HibernateUtil.getSessionFactory().openSession();
    		Query query=	session.createQuery("from User ");
    	   List<User> list=(List<User>)query.list();
    	    for (User user : list) {
    			System.out.println(user);
    		}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    	}
    

      分页查询:

    	
    	@Test
    	public void SelectPageListUser() {
    	// 获取分页数据
    		Session session = null;
    		try {
    			session = HibernateUtil.getSessionFactory().openSession();
    		Query query=	session.createQuery("from User ");
    	   List<User> list=(List<User>)query
    			   .setFirstResult(0)  //从0项开始
    			   .setMaxResults(3) //每页三条数据
    			   .list();
    	    for (User user : list) {
    			System.out.println(user);
    		}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (session != null)
    				session.close();
    
    		}
    	}
    

      代码包:http://pan.baidu.com/s/1hq1esh2

    备注:

    添加 JBOOS TOOL路径
    http://download.jboss.org/jbosstools/updates/stable/helios/

  • 相关阅读:
    过滤textarea
    vue引用jquery
    vue_ajax插件Axios
    VeeValidate
    mongodb
    WEBGL实现--three.js笔记整理
    My SQLworkbench问题总结
    vue遇到的问题
    MYSQL使用笔记
    vue笔记
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3702804.html
Copyright © 2020-2023  润新知