Mybatis一对一和一对多关联查询学习,并传递参数

概念

假如遇到一种需求,查询一个人,顺便要求把他的下属职员的信息也搜出来,那么就需要用到关联查询

 

那么这样查询的话返回值肯定不能是resultType了

得靠resultMap来映射一下

 

resultMap里的属性标签

代表一对一

代表一对多

 

一对一感觉直接表关联就可以先学习一对多

首先实体类

/**
 * @author JAVA
 *	学习关联查询实体类
 */
public class Emp {

	private String name;
	private String job;
	private String Boss;

	private List zhazha;
	
	public String getBoss() {
		return Boss;
	}
	public void setBoss(String boss) {
		Boss = boss;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public List getZhazha() {
		return zhazha;
	}
	public void setZhazha(List zhazha) {
		this.zhazha = zhazha;
	}
	
	
}

下属用实体类建立集合

Controller

	@GetMapping("/learnLinked")
	@ApiOperation(value = "学习关联查询")
	public List learnLinked(){
		
		return service.learnLinked();
			
	}

Service

public ListlearnLinked() {
	// TODO Auto-generated method stub
	List emp = null;
	
	emp = empMapper.learnLinked();
	
	return emp;
}

Dao

public List learnLinked();

Mapper 重点来了

	
	
		
		
		
		       
		
		
	
	

第一条语句很简单 去查询没有上级的人员名单

之后建立了一个resultmap 来映射要关联查询字段

oftype 指定映射java类型 

column 指定要拿哪行去关联查询 以此例子说明  就是拿第一条语句查出的name 去查所对应的下属

select 指定要执行的语句

第二条sql

去查询 上级名是上级sql映射过来的 name

 

 

注意点 第一次查询必须为 没有上级的 不然会报错

 

### The error may exist in file [D:\SpringBootWorkSpace\SpringBootMyBatisAndSwagger\target\classes\mapper\EmpMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select *     from 关联查询学习    where boss
### Cause: java.sql.SQLSyntaxErrorException: ORA-00920: 无效的关系运算符


; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00920: 无效的关系运算符
] with root cause


oracle.jdbc.OracleDatabaseException: ORA-00920: 无效的关系运算符

--------------------------------------------------------------------------------------------------------------

关联查询 还有可能要传递多个参数 下面是解决方法

	
    
     
		    
    	
    
    

 

你可能感兴趣的:(Mybatis)