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; } }
分类:
Hibernate与JDBC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)