zoukankan      html  css  js  c++  java
  • Hibernate 操作数据库

    com.tao.pojo实体类
    
    package com.tao.pojo;
    
    public class User {
        private int id;
        private String name;
        private String password;
        
        public User() {
            super();
        }
        public User(int id, String name, String password) {
            super();
            this.id = id;
            this.name = name;
            this.password = password;
        }
        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 String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
        }
    
    }
    
    User.hbm.xml映射文件
    
    <?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="org.hibernate.test.schemaupdate">
    
        <class name="com.tao.pojo.User" table="user">
            <id name="id">
                <generator class="identity"></generator>
            </id>
            <property name="name"/>    
            <property name="password" column="pass"/>
        </class>
    
    </hibernate-mapping>
    
    
    配置文件hibernate.cfg.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!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>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.password">root</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test0102?characterEncoding=utf-8</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            
            <!-- 因为加载的时候只加载配置文件,没有加载映射文件,让它去找 -->
            <mapping resource="com/tao/pojo/User.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
    
    
    
    DAO方法
    com.tao.dao
    
    package com.tao.dao;
    
    import java.util.List;
    
    public interface BaseDAO<T> {
    //    通用的功能
        public List<T> findAll();
        
        public T findById(int id);
        
        public void deleteById(int id);
        
        public boolean update(T t);
        
        public boolean save(T t);
        
        
    }
    
    package com.tao.dao;
    
    import com.tao.pojo.User;
    
    public interface UserDAO extends BaseDAO<User> {
        
        public User login(String name,String password);
    
    }
    
    实现类 com.tao.dao.Impl
    
    package com.tao.dao.Impl;
    
    import java.io.Serializable;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.query.Query;
    
    import com.tao.dao.UserDAO;
    import com.tao.pojo.User;
    
    public class UserDAOImpl implements UserDAO{
    
        @Override
        public List<User> findAll() {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            Query<User> query = session.createQuery("from User", User.class);
            List<User> list = query.list();
            
            session.getTransaction().commit();
            session.close();
            factory.close();
            
            return list;
        }
    
        @Override
        public User findById(int id) {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            Query<User> query = session.createQuery("from User where id=?", User.class);
            query.setParameter(0, id);
            User user = query.uniqueResult();
            
            session.getTransaction().commit();
            session.close();
            factory.close();
            
            return user;
        }
    
        @Override
        public void deleteById(int id) {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            //方法1
    //        User user = session.get(User.class, id);
    //        session.delete(user);
            //放法2
    //        User user = new User();
    //        user.setId(id);
    //        session.delete(user);
            
            //方法3
            Query query = session.createQuery("delete from User where id=?");
            query.setParameter(0, id);
            int rows = query.executeUpdate();
            System.out.println(rows+"=============rows");
            session.getTransaction().commit();
            session.close();
            factory.close();
    
        }
    
        @Override
        public boolean update(User t) {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            //update()只根据Id更新
    //        session.update(t);
            
            //HQL语句(User是类名,name,password是类里面的属性名)
            Query query = session.createQuery("update User set name=?,password=? where id=?");
            query.setParameter(0, t.getName());
            query.setParameter(1, t.getPassword());
            query.setParameter(2, t.getId());
            int rows = query.executeUpdate();
            
            session.getTransaction().commit();
            session.close();
            factory.close();
            if(rows>0) {
                return true;
            }
            return false;
        }
    
        @Override
        public boolean save(User t) {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            Integer id = (Integer) session.save(t);
            
            
            session.getTransaction().commit();
            session.close();
            factory.close();
            if(id>0) {
                return true;
            }
            return false;
        }
    
        @Override
        public User login(String name, String password) {
            // TODO Auto-generated method stub
            Configuration configure = new Configuration().configure();
            SessionFactory factory = configure.buildSessionFactory();
            Session session = factory.openSession();
            session.beginTransaction();
            Query<User> query = session.createQuery("from User where name=? and password=?",User.class);
            query.setParameter(0, name).setParameter(1, password);
            User user = query.uniqueResult();
            
            session.getTransaction().commit();
            session.close();
            factory.close();
            return user;        
        }
    
    }
    JUnit测试
    
    package com.tao.test;
    
    import static org.junit.Assert.*;
    
    import java.util.List;
    
    import org.junit.Test;
    
    import com.tao.dao.Impl.UserDAOImpl;
    import com.tao.pojo.User;
    
    public class JUnit_User {
    
        UserDAOImpl impl = new UserDAOImpl();
        @Test
        public void testAll() {
            List<User> list = impl.findAll();
            for (User uu : list) {
                System.out.println(uu);
            }
    
        }
        @Test
        public void testById() {
            
            User user = impl.findById(2);
            System.out.println(user);
        }
        
        @Test
        public void testdeleteById() {
            System.out.println("delete++++++++++++++++++");
            impl.deleteById(10);
            
        }
        
        @Test
        public void save() {
            User user = new User(12, "ss", "ss");
            boolean b = impl.save(user);
            System.out.println(b);
        }
        
        @Test
        public void update() {
            User user = new User(2, "ss", "222");
            impl.update(user);
        }
        
        //登录
        @Test
        public void login() {
            User user = impl.login("ss", "222");
            System.out.println(user);
        }
        
        
    }
  • 相关阅读:
    SVG <–> XAML
    Visual Studio 2005 下 ASP.net Web Service SOAP XML 节点的疑惑
    IE 和 Chrome 不能上网,Windows Live Mail 不能发邮件。Firefox可用。解决办法
    c# FileStream和StreamWriter用法
    c# 壓縮與解壓的簡單學習
    c# 文件輸入和輸出主要類說明
    部署Web應用程序
    allowDefinition='MachineToApplication' 错误的解决办法
    Global.asax的16个事件处理过程
    c# 類模板加上自定義內容
  • 原文地址:https://www.cnblogs.com/jili6254/p/8568745.html
Copyright © 2011-2022 走看看