当前位置 : 主页 > 编程语言 > c++ >

Mybatis多表查询

来源:互联网 收集:自由互联 发布时间:2021-07-03
t.text 假设在数据库中存在一对多、多对多等关系,则在一个表中的主键可能作为另一个表的外键而存在,所以在查询的时候返回的结果可能不单单是一个JOPO类,因此就要用到resultMap这
t.text
假设在数据库中存在一对多、多对多等关系,则在一个表中的主键可能作为另一个表的外键而存在,所以在查询的时候返回的
结果可能不单单是一个JOPO类,因此就要用到resultMap这个元素去自己定义相关要返回的内容。通常一对多用到association
这个元素,多对一用到collection元素。

一对多内容:
假设一个班级对应多个学生的情况。
班级表:
CREATE TABLE `clazz` (
  `id` int(14) NOT NULL DEFAULT '0',
  `code` varchar(18) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
学生表:
CREATE TABLE `student` (
  `id` int(14) NOT NULL DEFAULT '0',
  `name` varchar(18) DEFAULT NULL,
  `sex` varchar(18) DEFAULT NULL,
  `age` int(14) DEFAULT NULL,
  `clazz_id` int(14) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `class_id` (`clazz_id`),
  CONSTRAINT `class_id` FOREIGN KEY (`clazz_id`) REFERENCES `clazz` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

班级类:
private int id;
	private String code;
学生类:
private int id;
	private String name;
	private String sex;
	private int age;
	private Clazz clazz;
其中clazz属性对应Clazz对象。

查询要求:查询学生的时候同时显示班级信息。多对一关系。

 
	 
  
	 
  
	 
  
	  
  
	  
  
	  
  
	
 
	
	
解释:首先执行了id为selectStudent的语句,返回类型为自己定义的Map类,其中的clazz属性是班级属性,所以通过
association元素进行关联映射,column表示列名,javaType表示属性对应的类型,property表示类的属性名,在association元素
中执行了一个select语句,通过传入的班级id作为参数进行查询,返回一个Clazz对象封装在Student的clazz属性中。

查询要求:查询班级信息的时候显示班级的学生。一对多关系。
班级类:
private int id;
	private String code;
	private List
 
   students;
其中students表示集合类型,其中为Student对象。
学生类:
private int id;
	private String name;
	private String sex;
	private int age;
	private Clazz clazz;

查询语句的书写:

   
    
    
    
    
  
	
  
	
  
上述重点在于collection元素,其中property表示的是属性名称,column表示对应的数据库表的列名,javaType表示返回
的类型,ofType表示集合中返回的类型,上述是Student这个类,select表示一个SQL语句,将返回的结果传给Property定义
的对象,其中的参数由column提供。

由于上述中集合中还有集合,所以通过foreach不能进行获取。所以只能通过原始的方法,如下:
 <%
       List list = (List)request.getAttribute("clazzlist");//获取最外面的集合
       for(int i=0;i
    <%=clazz.getId()%> <%=clazz.getCode()%> <%=student.getId()%> <%=student.getName()%> <%=student.getSex()%> <%=student.getAge()%>  <% } } %>
  
 
网友评论