SpringData:关联查询
一、查询方式
1、导航式查询
使用“对象.属性” 进行查询;对于多的查询, 默认就是延迟加载,添加注解@Transactional
在OneToMany 注解中需要添加属性 fetch:值:FetchType.LAZY 延迟加载 FetchType.ENAGER 及时加载
2、Specification查询
package cn.zrf.jpa; import cn.zrf.jpa.dao.Customer2Dao;
import cn.zrf.jpa.dao.LinkManDao;
import cn.zrf.jpa.entity.Customer2;
import cn.zrf.jpa.entity.LinkMan;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.*;
import java.util.Set; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class QueryTest {
@Autowired
Customer2Dao customer2Dao;
@Autowired
LinkManDao linkManDao; @Test
@Transactional
public void queryCustomer(){
Customer2 one = customer2Dao.findOne(1l);
// System.out.println(one);
//根据客户查询联系人信息
Set<LinkMan> set = one.getLinkMans();
for(LinkMan linkMan:set){
System.out.println(linkMan);
}
}
//根据联系人查询客户
@Test
@Transactional
public void queryLinkMan(){
LinkMan one = linkManDao.findOne(3l);
System.out.println(one);
Customer2 customer2 = one.getCustomer2();
System.out.println(customer2);
}
//根据手机号查询
@Test
@Transactional
public void questPhone(){
Customer2 customer2 = customer2Dao.findOne(new Specification<Customer2>() {
@Override
public Predicate toPredicate(Root<Customer2> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
//root:关联联系人表
//参数1、Customer2实体类中关联的属性的名称 参数2、连接方式
Join<Object, Object> join = root.join("linkMans", JoinType.LEFT);
//创建查询条件
Predicate predicate = criteriaBuilder.equal(join.get("lkmPhone"), "1234");
return predicate;
}
});
// System.out.println(customer2);
//获得客户信息查询联系人
Set<LinkMan> linkMans = customer2.getLinkMans();
for (LinkMan linkMan:linkMans){
System.out.println(linkMan);
} }
}
SpringData:关联查询的更多相关文章
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- MYSQL基础操作之数据约束与关联查询
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...
- C#代码中实现两个表(DataTable)的关联查询(JOIN)
之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便.近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横 ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- Mysql多表表关联查询 inner Join left join right join
Mysql多表表关联查询 inner Join left join right join
- YII2-数据库数据查询方法,关联查询with, joinWith区别和分页
一.ActiveRecord 活动记录 1.with关联查询 例如,查询评论 $post = Post::find()->with('comments'); 等价于以下结果集 SELECT * ...
- Mybatis高级查询之关联查询
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...
- Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询
在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
随机推荐
- [PHP][thinkphp5] 学习三:函数助手实例说明
来源:http://blog.csdn.net/lunsunhuan1825/article/details/71086487 load_trait:快速导入Traits,PHP5.5以上无需调用 / ...
- EasyPoi 导入导出Excel时使用GroupName的踩坑解决过程
一.开发功能介绍: 简单的一个excel导入功能 二.Excel导入模板(大致模板没写全): 姓名 性别 生日 客户分类 联系人姓名 联系人部门 备注 材料 综合 采购 张三 男 1994/05/25 ...
- Ubuntu当状态栏网络图标隐藏的解决方法汇总
最有效之一: 直接在终端运行以下命令,以root身份: nm-applet --sm-disable 不建议修改配置文件内容
- [http 1.1] M-POST w3
5. Mandatory HTTP Requests An HTTP request is called a mandatory request if it includes at least one ...
- [Hands-on-Machine-Learning-master] 02 Housing
用到的函数 numpy.random.permutation随机排列一个序列,返回一个排列的序列. >>> np.random.permutation(10) array([1, 7 ...
- Zabbix备份数据文件
mysql自带的工具mysqldump,当数据量大了之后进行全备所花的时间比较长,这样将会造成数据库的锁读.从而zabbix服务的监控告警不断,想着做下配置文件的备份.刚好有这么个脚本.满足了需求. ...
- D3.js 力导向图的显示优化
D3.js 作为一个前端,说到可视化除了听过 D3.js 的大名,常见的可视化库还有 ECharts.Chart.js,这两个库功能也很强大,但是有一个共同特点是封装层次高,留给开发者可设计和控制的部 ...
- 网络传输 socket
一.Socket语法及相关 前言:osi七层模型: 第七层:应用层. 各种应用程序协议,如HTTP,FTP,SMTP,POP3. 第六层:表示层. 信息的语法语义以及它们的关联,如加密 ...
- Spark 源码系列(六)Shuffle 的过程解析
Spark 大会上,所有的演讲嘉宾都认为 shuffle 是最影响性能的地方,但是又无可奈何.之前去百度面试 hadoop 的时候,也被问到了这个问题,直接回答了不知道. 这篇文章主要是沿着下面几个问 ...
- Linux 查看进程资源--ps、top命令
1,ps命令 ps能够给出当前系统中进程的快照.它能捕获系统在某一事件的进程状态 命令参数: a 显示所有进 ...