34、参数查询和关联查询

学习目标:

1、掌握使用hql的参数查询方式

学习过程:

一、参数查询

1、使用?

在条件查询中我们查询条件都是通过方法的参数设置的,为了提高安全性,我们很少使用字符串拼接的方式,所以在学习jdbc的时候我们使用PreparedStatement,然后使用?进行代参的方式,Query和PreparedStatement有点类似,也是支持这种方式的。同时hql也支持想大于,等于或者in等等条件查询的方式,比如下面我们要根据员工的姓名,体重进行条件查询,示例代码如下:

public class Run3 {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        // 开启一个事务
        session.beginTransaction();
        String hql = "select e from Employee e where (e.employeeWeith between ? and ? )and e.employeeName like ?";
        Query query = session.createQuery(hql);
        query.setParameter(0, 1D);
        query.setParameter(1, 30D);
        query.setParameter(2, "%liubao%");

        List<Employee> employees = query.list();
        for (Employee employee : employees) {
            System.out.println(employee.getEmployeeName());
        }
        // 提交事物

        session.getTransaction().commit();
        session.close();
        HibernateUtil.getSessionFactory().close();

    }

}

当然大家可以直接使用hiberTemplate的find方法,这里只是为了让大家更加熟悉回调函数才使用这种方式。

2、使用代参,命名参数

Query除了支持使用?代参的方式,还提供了使用命名参数的方式,格式是冒号加命名参数名称

:参数名称

修改上面的例子,使用命名参数的方式

public class Run4 {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        // 开启一个事务
        session.beginTransaction();
        String hql = "select e from Employee e where (e.employeeWeith between :mi and :ma )and e.employeeName like :emname";
        Query query = session.createQuery(hql);

        query.setParameter("mi", 1D);
        query.setParameter("ma", 30D);
        query.setParameter("emname","%liubao%");

        List<Employee> employees = query.list();

        for (Employee employee : employees) {
            System.out.println(employee.getEmployeeName());
        }
        // 提交事物
        session.getTransaction().commit();
        session.close();

        HibernateUtil.getSessionFactory().close();

    }

}

二、关联查询

在学习sql的时候,我们经常要一次查询多张表,称为多表的关联查询,hql也是一样支持这种多表之间的关联查询,只是操作的对象而已,比如我们现在需要根据职位名称查询员工的信息,使用原始sql语句可能是以下的写法:

select * from employee e, post p where e.post_id=p.post_id where p.post_name like ?

改查hql也是差不多,只是操作的是对象和对象的属性,我们可以这样写:

select e from Employee e,Post p where e.post=p and p.postName like ?

当然hql还可以这样写,

select e from Employee e where e.post.postName like ?

完成代码如下:

public class Run5 {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        // 开启一个事务
        session.beginTransaction();
        // String
        // hql="select e from Employee e,Post p where e.post=p and p.postName like ?";
        String hql = "select e from Employee e where e.post.postName like ?";
        Query query = session.createQuery(hql);
        query.setParameter(0, "%職位%");
        List<Employee> employees = query.list();
        for (Employee employee : employees) {
            System.out.println(employee.getEmployeeName());
        }

        // 提交事物
        session.getTransaction().commit();
        session.close();
        HibernateUtil.getSessionFactory().close();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: py2neo是一种用于在Python中使用Neo4j图形数据库的库。以下是一些py2neo的案例(请注意,这些案例没有代码): 1. 在Neo4j中创建新节点 2. 在Neo4j中创建新关系 3. 在Neo4j中查询节点和关系 4. 在Neo4j中删除节点和关系 5. 在Neo4j中设置节点和关系的属性 6. 在Neo4j中搜索特定的节点或关系 7. 在Neo4j中执行Cypher查询 8. 在Neo4j中执行多个Cypher查询并处理结果 9. 在Neo4j中执行参数的Cypher查询 10. 在Neo4j中使用py2neo的可视化功能查看图形数据 11. 在Neo4j中使用py2neo的简单路径查找功能 12. 在Neo4j中使用py2neo的最短路径查找功能 13. 在Neo4j中使用py2neo的遍历功能 14. 在Neo4j中使用py2neo的分组功能 15. 在Neo4j中使用py2neo的聚合功能 16. 在Neo4j中使用py2neo的统计功能 17. 在Neo4j中使用py2neo的路径求和功能 18. 在Neo4j中使用py2neo的插入功能 19. 在Neo4j中使用py2neo的更新功能 20. 在Neo4j中使用py2neo的删除功能 21. 在Neo4j中使用py2neo的合并功能 22. 在Neo4j中使用py2neo的创 ### 回答2: 在NLP中,py2neo是一个Python库,用于连接和操作Neo4j图数据库。以下是一些py2neo的案例应用: 1. 构建知识图谱:使用py2neo可以将文本数据转化为图数据库的节点和关系,用于构建知识图谱。 2. 文本分析:使用py2neo可以对文本数据进行分析,如提取实体、关键词、情感分析等。 3. 关系提取:通过py2neo可以从文本中提取出关系,如人物关系、产品关联等。 4. 问答系统:使用py2neo可以将问答系统的问题和回答存储到图数据库中,并通过查询图数据库进行问题的匹配和回答的生成。 5. 文本分类:通过py2neo可以将文本数据进行分类,并将分类结果存储到图数据库中,方便后续的查询和分析。 6. 摘要生成:使用py2neo可以从大段文本中提取出关键句,生成文本的摘要。 7. 文本相似度计算:使用py2neo可以计算文本之间的相似度,用于文本匹配和推荐系统。 8. 文本生成:通过py2neo可以生成自然语言文本,如文章的自动生成、对话系统的回答生成等。 9. 词向量训练:使用py2neo可以对大规模的文本数据进行训练,生成词向量模型,用于词义表示和文本相似度计算。 10. 语义角色标注:通过py2neo可以对句子进行语义角色标注,识别出句子中的谓语和论元。 以上只是一些py2neo在NLP中的应用案例,展示了py2neo的多样性和实用性。通过使用py2neo,可以更方便地进行图数据库的操作和管理,提升NLP任务的效率和准确性。 ### 回答3: 在NLP中,py2neo是一个常用的Python图数据库操作库,用于连接Neo4j数据库,并通过Python进行数据的存取和分析。以下是60个py2neo案例,它们覆盖了py2neo的主要功能和用法: 1. 连接Neo4j数据库; 2. 创建新节点; 3. 更新节点属性; 4. 删除节点; 5. 查询节点; 6. 创建新关系; 7. 更新关系属性; 8. 删除关系; 9. 查询关系; 10. 通过标签查询节点; 11. 通过属性查询节点; 12. 通过关系查询相邻节点; 13. 通过路径查询节点; 14. 执行Cypher查询语句; 15. 执行事务操作; 16. 批量创建节点; 17. 批量更新节点属性; 18. 批量删除节点; 19. 批量创建关系; 20. 批量更新关系属性; 21. 批量删除关系; 22. 创建索引; 23. 删除索引; 24. 查询索引; 25. 创建约束; 26. 删除约束; 27. 查询约束; 28. 创建唯一约束; 29. 创建唯一属性约束; 30. 创建节点标签; 31. 删除节点标签; 32. 查询节点标签; 33. 创建关系类型; 34. 删除关系类型; 35. 查询关系类型; 36. 创建节点名称; 37. 删除节点名称; 38. 查询节点名称; 39. 创建节点属性约束; 40. 删除节点属性约束; 41. 查询节点属性约束; 42. 创建关系属性约束; 43. 删除关系属性约束; 44. 查询关系属性约束; 45. 创建节点标签约束; 46. 删除节点标签约束; 47. 查询节点标签约束; 48. 创建图形网络; 49. 删除图形网络; 50. 查询图形网络; 51. 创建节点样式; 52. 删除节点样式; 53. 查询节点样式; 54. 创建关系样式; 55. 删除关系样式; 56. 查询关系样式; 57. 创建图形样式; 58. 删除图形样式; 59. 查询图形样式; 60. 创建节点索引约束。 除了上述例子,py2neo还支持复杂的数据操作,如图形算法、数据聚合、数据分析等。这些案例展示了py2neo的丰富功能和强大性能,使其成为NLP领域中处理图数据库的重要工具之一。根据具体需求,可以结合这些案例来实现更加复杂和高效的数据分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值