文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

hibernate HQL 模糊查询 3

2023-01-31 06:17

关注

以下是用 hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式,其中方式一是这三中方式中最理想的方式,至少方式一可以有效的防止由于查询条 件中需要参数的增多导致的代码长度太长出现代码折行的情况(代码太长会给后期的维护和测试带来很大的不便)。但是还有比他更理想的方式,因为方式一在定义 strSQL时使用String ,这就势必会造成当变量过多时strSQL自身太长的问题。一个比较有效的改进办法就是将String 改进为StringBuffer来处理。
方法一:
java 代码
public List listUncertainClasses(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    String strSQL="from Classes as a where a.classno like :name";   
    Query query = session.createQuery(strSQL);   
    query.setString("name", "%"+OId+"%");   
    List result=query.list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   

方法二:
java 代码
public List listUncertainClasses_01(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    List result=session.createQuery("from Classes as a where a.classno like '%"+OId+"%'").list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   

方法三:
java 代码
public List listUncertainClasses_02(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    List result=session.createQuery("from Classes as a where a.classno like :name").setParameter("pid",OId).list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   

文章出处:http://www.diybl.com/course/7_databases/database_other/20071019/78248.html
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯