• Hibernate 工具类


    1.HibernateConfigUtil.java(HIbernate配置工具类)

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateConfigUtil {
        private static Configuration config;
        private static SessionFactory sessionFactory;
        //创建静态私有线程对象
        private static ThreadLocal<Session> localSession=new ThreadLocal<>();
        public HibernateConfigUtil(){}
        static {
            try{
                // 读取解析hibernate.cfg.xml文件
                config=new Configuration().configure();
                //建立SessionFactory
                sessionFactory=config.buildSessionFactory();
            }catch (Exception e){
                System.out.println("初始化加载异常");
                e.printStackTrace();
            }
        }
    
        //获取session对象(类似于JDBC中的Connection对象con)
        public static Session getSession(){
            //获取当前线程中的session对象
            Session session=localSession.get();
            // 验证session对象是否为空
            if(session==null){
                session=sessionFactory.openSession();// 使用工厂对象生产session对象
                localSession.set(session);// 将session对象放入线程
            }
            return session;
        }
    
        //关闭session对象
        public static void closeSession(){
            //获取当前线程中的session对象
            Session session=localSession.get();
            localSession.set(null);// 清空线程中的session对象
            if(session!=null){
                session.close();
            }
        }
    
    
        public static void rebuildSessionfactory(){
            try{
                // 读取解析hibernate.cfg.xml文件
                config=new Configuration().configure();
                //建立SessionFactory
                sessionFactory=config.buildSessionFactory();
            }catch (Exception e){
                System.out.println("初始化加载异常");
                e.printStackTrace();
            }
        }
    
        public static SessionFactory getSessionFactory(){
            return sessionFactory;
        }
    
        public static Configuration getConfig(){
            return config;
        }
    }

    2.HibernateConnectUtil(Hibernate操作数据库工具类)

    import EntityClass.EntryFirminfoEntity;
    import EntityClass.StudentEntity;
    import EntityClass.UserEntity;
    import EntityClass.UserinfoEntity;
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.MatchMode;
    import org.hibernate.criterion.Restrictions;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class HibernateConnectUtil {
        public static void addData() {
            //创建一个session对象
            Session session1= HibernateConfigUtil.getSession();
            //Fenciresult数据库表所对应的实体类,生成实体类对象,操作数据库表
            UserEntity userEntity=new UserEntity();
            //设置数据库对应字段的值,主键若是自增模式,无需人为设置
            userEntity.setUserName("linda");
            userEntity.setPassword("888888");
            //把数据放入session中
            session1.save(userEntity);
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
        }
    
        //向数据库UserInfo表中添加用户注册的数据
        public static void addUserInfoData(String username,String password,String email,String company) {
            //创建一个session对象
            Session session1= HibernateConfigUtil.getSession();
            //Fenciresult数据库表所对应的实体类,生成实体类对象,操作数据库表
            UserinfoEntity userinfoEntity=new UserinfoEntity();
            //设置数据库对应字段的值,主键若是自增模式,无需人为设置
            userinfoEntity.setUsername(username);
            userinfoEntity.setPassword(password);
            userinfoEntity.setEmail(email);
            userinfoEntity.setFirm(company);
            //把数据放入session中
            session1.save(userinfoEntity);
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
        }
    
        //利用hibernate对数据库中的EntryFirminfoEntity表进行查询,将查询结果放入一个集合返回
        public static List<EntryFirminfoEntity> queryBasicMessageByUserInput(String companyname, String realAddress, String riskrank, ArrayList<String> firmtypeList){
            //1.创建一个session对象
            Session session1= HibernateConfigUtil.getSession();
            //2.通过session的createCriteria创建一个Criteria 对象
            Criteria criteria=session1.createCriteria(EntryFirminfoEntity.class);
            //3. Criteria.add 增加约束。
            criteria.add(Restrictions.like("firmName",companyname,MatchMode.ANYWHERE))
            .add(Restrictions.like("address",realAddress,MatchMode.ANYWHERE));
            //采用for循环,不断添加条件
            for (int i = 0; i <firmtypeList.size() ; i++) {
                criteria.add(Restrictions.like("mgTypeA",firmtypeList.get(i),MatchMode.ANYWHERE));
            }
            //4.调用list()方法返回查询结果的集合
            List<EntryFirminfoEntity> firminfolist=criteria.list();
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
            HibernateConfigUtil.closeSession();
            return firminfolist;
        }
    
        //利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
        public static List<StudentEntity> queryStudentByUserInput(String studentname, String realAddress, String riskrank){
            //1.创建一个session对象
            Session session1= HibernateConfigUtil.getSession();
            //2.通过session的createCriteria创建一个Criteria 对象
            Criteria criteria=session1.createCriteria(StudentEntity.class);
            //3. Criteria.add 增加约束(连续加入两个条件,达到"或"的效果)[筛选条件为:name属性中有"l"的,或address属性中有"天"或"金"]
            criteria.add(Restrictions.or(Restrictions.like("name", "l",MatchMode.ANYWHERE),
                    Restrictions.or(Restrictions.like("address", "天",MatchMode.ANYWHERE),Restrictions.like("address", "金",MatchMode.ANYWHERE))));
            //4.调用list()方法返回查询结果的集合
            List<StudentEntity> studentinfolist=criteria.list();
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
            HibernateConfigUtil.closeSession();
            return studentinfolist;
        }
    
    
    }
  • 相关阅读:
    话题: 工人重度烧伤 厂方疑暗示“安乐死”后再赔偿
    Linux下使用mail命令发送邮件
    跨境电商优秀网站
    smarty模版使用php标签,如何获取模版变量
    弹窗效果处理和改进
    Keepalived + MySQLfailover + GTIDs 高可用
    linux的常用命令
    linux简单介绍,helloworld,vi使用,用户管理
    linux语言设置i18n(转)
    丢手帕问题
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10734296.html
Copyright © 2020-2023  润新知