• 肝 hibernate 配置and增删改查 and 测试


      已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧.

    在看这篇文章之前希望你 知道sessionfactory 和session 还有 transaction(事物) 诶嘿不造的可以去看看http://blog.csdn.net/u012377333/article/details/48086193

       OK正题开始 步骤 我们需要一个可以持久化的bean类 还有它的附属映射 hbm.xml文件 以及dao(重要)  and 测试类 

    首先开始是bean类代码如下:

      

    package qy.java.bean;
    
    public class Userbean {
        private int id;
        private String username;
        private String password;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "Userbean{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }

    其次是他的映射文件

      

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="qy.java.bean">
        <class name="Userbean" table="x_user">
            <id name="id" type="int" column="id">
                <generator class="native"/>
            </id>
            <property name="username" type="string" column="username" length="20"/>
            <property name="password" type="string" column="password" length="20"/>
        </class>
    </hibernate-mapping>

    这里要说一个 在主配置文件里面我没有配置自动建表的那货= = 所以我是直接手动 建表 有兴趣的同学可以自己去配置

      然后是dao类   里面包括增删改查 还有一个记录数是买4送一吧,哦对了 我这种初始方法是比较老的一种方法 新的初始化方法在下面

    package qy.java.dao;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.query.Query;
    import qy.java.bean.Userbean;
    
    import java.util.List;
    
    
    public class Userdao {
        private static SessionFactory sf;
        static {
            Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
            sf = cfg.buildSessionFactory();// 获得会话工厂
        }
    
        // 增加
        public void add(Userbean user) {
            // 读配置文件,会
            Session s = sf.openSession();
            Transaction t = null;
            try {
                t = s.beginTransaction();
                s.save(user); //持久化 对象
                t.commit(); //提交
            } catch (Exception e) {
                t.rollback(); //回滚
                throw new RuntimeException(e);
            } finally {
                s.close();
            }
    
        }
    
        // 更新
        public void update(Userbean user) {
            // 读配置文件,会
            Session s = sf.openSession();
            Transaction t = null;
            try {
                t = s.beginTransaction();
                s.update(user);
                // s.update("username", user);
                t.commit();
            } catch (Exception e) {
                t.rollback();
                throw new RuntimeException(e);
            } finally {
                s.close();
            }
    
        }
        //删除
        public void delete(int id) {
            // 读配置文件,会
            Session s = sf.openSession();
            Transaction t = null;
            try {
                t = s.beginTransaction();
                // User user = (User) s.get(User.class, id);
                Userbean user = new Userbean();
                user.setId(id);
                s.delete(user);
                t.commit();
    
            } catch (Exception e) {
                t.rollback();
                throw new RuntimeException(e);
            } finally {
                s.close();
            }
        }
        //查询所有
        public List<Userbean> findALL() {
            // 读配置文件,会
            Session s = sf.openSession();
            List<Userbean> list = null;
            try {
    
                list = s.createQuery("FROM Userbean").list();
                /*Criteria c = s.createCriteria(User.class);
                list = c.list();*/
            } catch (Exception e) {
                throw e;
            } finally {
                s.close();
            }
            return list;
        }
    
               // 查询总记录数
        public long findUserCount() {
            //int  double  ,integer Double  char   Charset
            Session s = sf.openSession();
            Long count = null;
            try {
                count  = (Long) s.createQuery("SELECT COUNT(*) FROM Userbean ")//
                        .uniqueResult();
    
            } catch (Exception e) {
                throw e;
            } finally {
                s.close();
            }
            return count;
    
        }
    }

    这个是新的初始化方法 

    package qy.java.dao;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import qy.java.bean.Userbean;
    
    public class Foxdao {
        private static  SessionFactory sf;
        static {
            try {
                Configuration configuration = new Configuration();
                configuration.configure();
                sf = configuration.buildSessionFactory();
            } catch (Throwable ex) {
                throw new ExceptionInInitializerError(ex);
            }
        }
    
        // 增加
        public void add(Userbean user) {
            // 读配置文件,会
            Session s = sf.openSession();
            Transaction t = null;
            try {
                t = s.beginTransaction();
                s.save(user); //持久化 对象
                t.commit(); //提交
            } catch (Exception e) {
                t.rollback(); //回滚
                throw new RuntimeException(e);
            } finally {
                s.close();
            }
    
        }
    
    }

    然后了是测试 方法= = 仁慈的我还给发测试.....

    package test.qy.java.dao; 
    
    import org.junit.Test; 
    import org.junit.Before; 
    import org.junit.After;
    import qy.java.bean.Userbean;
    import qy.java.dao.Userdao;
    
    import java.util.Iterator;
    import java.util.List;
    
    /** 
    * Userdao Tester. 
    * 
    * @author <Authors name> 
    * @since <pre>���� 20, 2017</pre> 
    * @version 1.0 
    */ 
    public class UserdaoTest { 
    
    @Before
    public void before() throws Exception { 
    } 
    
    @After
    public void after() throws Exception { 
    } 
    
    /** 
    * 
    * Method: add(Userbean user) 
    * 
    */ 
    @Test
    public void testAdd() throws Exception {
    
        Userbean user = new Userbean();
        user.setPassword("wqerwqer");
        user.setUsername("zhangsan");
            new Userdao().add(user);
    } 
    @Test
    public void updel(){
        Userbean userbean = new Userbean();
            userbean.setId(1);
            userbean.setUsername("滑稽");
            userbean.setPassword("10086");
             new Userdao().update(userbean);
    }
    @Test
    public void delet(){
        new Userdao().delete(2);
    }
    
    @Test
        public void file(){
           List<Userbean> list =new Userdao().findALL();
            Iterator<Userbean> it = list.iterator();
                Userbean user = null;
                while (it.hasNext()){
                    user = it.next();
                    System.out.println(user.getUsername());
                }
    
        }
    @Test
        public void testFindAllUserCount(){
            long count =new Userdao().findUserCount();
                System.out.println(count);
    }
    
    } 

    增删改查虽然简单 但是这些都是基础 就像 功夫里面的蹲马步 跑步一样 灵活运用 才能发挥他们真正的实力 相互之间的配合 结合自己的所需才能 实现作用 最大化..

      emmm写完了 刚开始搭建环境的时候出现 hibernate的不兼容我这个 jdk1.7原因是hibernate的版本太高了 = =然后我又懒 所以我就去下了一个1.8明明 十多分钟 能搞定的事情用了 一个多小时...气死欧蕾.

      

  • 相关阅读:
    UDP
    ICMP协议、DNS、ARP协议、ping、DHCP协议
    OSI七层模型和TCP/IP四层模型
    STL六大组件
    迭代器
    哈希表
    react wangeditor使用
    URL切割
    ES6对象合并
    nginx 访问本机文件
  • 原文地址:https://www.cnblogs.com/hwcs/p/7398697.html
Copyright © 2020-2023  润新知