Java Hibernate常用方法封装工具类
来源:互联网 发布:侠客风云传前传 mac 编辑:程序博客网 时间:2024/05/19 12:39
在学习Hibernate时,发现增删改查代码重复太多,归结成工具类,可以提高编码效率。
主要是增删该查功能,因此分为两大类型方法(增删改一类,查询一类),而方法又需要Session对象操作,因此,需要打开Session对象和关闭Session对象的方法。(其中增删改方法需要标识类型,因此又需创建枚举)。具体如下代码:
/***创建枚举*//** * * @Package:名称: HqlUtil * @Description:描述:创建枚举用来标识增删改的具体方法 * */public enum HqlUtil { upd, // 标识为修改方法 del, // 标识为删除方法 add; // 标识为新增方法}/***工具类*/import java.util.*;import org.hibernate.*;import org.hibernate.cfg.*;/** * * @Package:名称: TravelUtil * @Description:类描述:工具类主要封装增删该查的方法 * @date:建时间: 2015-5-16 */public class TravelUtil { /** * 打开session 返回值类型为Session */ public Session opneSession() { return new Configuration().configure().buildSessionFactory() .openSession(); } /** * 需要传入打开的Session * 关闭session 返回值类型为void */ public void closeSession(Session sess) { if (sess != null) { sess.close(); } } /** * 增删改调用该方法 * * @param object * :需要操作的inverse=false的对象 * @param inverse * =false(主动方)由主动方维护关联关系 * @param Enum control * 这是枚举,修改就是Control.upd,删除Control.del, * 新增Control.add; * @调用举例 new TravelUtil().ControlHql(object, Control.add); */ public int ControlHql(Object object, Enum control) { Session session = opneSession(); Transaction tx = session.beginTransaction(); int flg = -1; try { if(control.equals(HqlUtil.upd)){ session.update(object); } else if (control.equals(HqlUtil.del)) { session.delete(object); } else if (control.equals(HqlUtil.add)) { session.save(object); } flg = 1; tx.commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); flg = -1; tx.rollback(); } finally { this.closeSession(session); } return flg; } /** * 查询方法返回List<Object>集合 * * @param object * 为setProperties分装的条件 * @param hql为查询语句 * @return list<Object>集合 */ public List<Object> getReadList(String hql, Object object) { Session session = opneSession(); Query query = session.createQuery(hql).setProperties(object); List<Object> list = query.list(); this.closeSession(session); return list; } /** * * @Title: getReadList * @Description: 方法重载,实现分页 * @param @param nowPage * @param @param pageSize * @param @return * @return List<Object> * @throws */ public List<Object> getReadList(Object object,String hql,int nowPage, int pageSize) { Session session=this.opneSession(); Query query = session.createQuery(hql).setProperties(object); query.setFirstResult(nowPage); query.setMaxResults(pageSize); List<Object> obje=query.list(); return obje; } /** * @Title: getCont * @Description:得到查询sql条数 * @param @param hql * @param @return * @return int * @throws */ public int getCount(String hql){ if(hql.indexOf("count")<=0){ System.out.println("语句不符合查询总条数的语法"); return -1; }; Session session=this.opneSession(); Query query=session.createQuery(hql); Long li=(Long)query.uniqueResult(); int flg=Integer.parseInt(li.toString()); System.out.println(flg); this.closeSession(session); return flg; } } /** * * @Title: main * @Description: 工具类调用示例 * @param @param args * @return void * @throws */ public class Tests{ public static void main(String[] args) { //调用---------------------得到总条数方法 //1.调用方法得到总条数 int flg=new TravelUtil().getCount("select count(*) from Userinfo"); //2.测试得到的总条数 System.out.println(flg); System.out.println("这是调用--分页--查询方法得到所有数据,只举了用户名"); //调用----------------------分页查询 //1.调用方法getReadList List<Object> object= new TravelUtil().getReadList(new Object(),"from Userinfo",1, 15); //2.得到数据并便利 for (Object object2 : object) { //拆箱 Userinfo userinfo=(Userinfo)object2; //得到用户名 System.out.println(userinfo.getUsname()); } System.out.println("这是调用查询方法得到所有数据,只举了用户名"); //调用---------------------查询得到所有数据 List<Object> object3= new TravelUtil().getReadList("from Userinfo",new Object()); for (Object object2 : object3) { //拆箱 Userinfo userinfo=(Userinfo)object2; //得到用户名和用户 System.out.println(userinfo.getUsname()); } System.out.println("------调用增删改成方法,只举例用户表-------"); //调用增删改查方法 //1.创建对象 保存新增数据 Userinfo uid=new Userinfo(); //给属性赋值 uid.setUsname("张三"); uid.setUspass("1faf3aff"); //2.调用封装好的controlHql方法执行新增(add)并保持结果 int flgAdd= new TravelUtil().ControlHql(uid, HqlUtil.add); //3.根据结果判断是否执行成功! System.out.println(flgAdd>0?"新增成功!":"新增失败!"); }}
0 0
- Java Hibernate常用方法封装工具类
- 封装Hibernate工具类
- hibernate的封装工具类
- 日期操作工具类之 Calendar的常用方法封装
- 【造轮子】utils工具类(常用方法的封装)
- java封装selenium2常用方法
- java封装selenium2常用方法
- java封装selenium2常用方法
- java 封装工具类
- java反射机制调用方法及简易封装工具类
- Java集合工具类Collections常用方法
- 【Java】StringUtils工具类常用方法详解
- 【Java】StringUtils工具类常用方法详解
- jackson 工具类的 3 个常用方法,封装成工具类
- Hibernate封装好了的工具类
- Hibernate之封装utils工具类
- java操作hdfs常用方法封装
- Java常见工具类封装
- EasyUI更换主题并且记住cookie的方法
- hive常用函数
- 技术沙龙
- hdu 2016 数据的交换输出 (java)
- 我为什么决定在大学不谈恋爱
- Java Hibernate常用方法封装工具类
- ecshop操作成功后的3秒自动跳转如何改成立即跳转?
- hdu 5230
- c++程序设计——实验4
- bananapi 设置AV输出
- MFC - CTreeCtrl操作
- HDOJ 5229 ZCC loves strings
- 第五个人多大
- POJ-3646 The Dragon of Loowater