⼀对多查询:查询所有⽤户信息及⽤户关联的订单信息。
商品订单数据模型
注意:因为⼀个订单信息只会是⼀个⼈下的订单,所以聪哥查询订单信息出发关联查询⽤户信息为⼀对⼀查询。如果从⽤户信息出发查询⽤户下的订单信息则为⼀对多查询,因为⼀个⽤户可以下多个订单。
案例:查询所有⽤户信息及⽤户关联的订单信息
⽤户信息和订单信息为⼀对多关系。
使⽤resultMap实现。
1.将存储数据库表orders信息的类Orders对象定义在Ur对象中(其实本质上就是谁是对应关系前⾯的⼀,就将它作为返回类型,将另⼀个类对象定义在它的⾥⾯)。Ur类的定义内容为:
package com.huida.po;
import java.util.Date;
import java.util.List;
public class Ur {
private int id;
private String urname;// ⽤户姓名
星际穿越剧情
private String x;// 性别
private Date birthday;// ⽣⽇
private String address;// 地址
private List<Orders> list;
public List<Orders> getList() {
return list;
}
public void tList(List<Orders> list) {
this.list = list;
}
public void tId(int id) {
this.id = id;
}
public void tUrname(String urname) {
胡萝卜炒猪肝this.urname = urname;
}
public void tSex(String x) {
this.x = x;
}
public void tBirthday(Date birthday) {
this.birthday = birthday;
}
public void tAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public String getUrname() {
return urname;
}
public String getSex() {
return x;
}
public Date getBirthday() {
return birthday;
}
杨梅图片
public String getAddress() {
return address;
}
班组安全教育@Override
public String toString() {
return "Ur [id=" + id + ", urname=" + urname + "]";
}
}
2.在UrMapper接⼝中定义⽅法:
public List<Ur> findUrAndOrders();
3.在l中进⾏配置:
<resultMap type="com.huida.po.Ur" id="urAndOrdersResultMap">
<id column="id" property="id"/>
<result column="urname" property="urname"/>
<result column="x" property="x"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
<collection property="list" ofType="com.huida.po.Orders">
<!-- id标签指定主键字段的对应关系 -->
<id column="oid" property="id"></id>
<!-- result标签指定⾮主键字段的对应关系 -->
<result column="ur_id" property="urId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
</collection>
晕车药有哪些药品
</resultMap>
<lect id="findUrAndOrders" resultMap="urAndOrdersResultMap">
<!-- lect后⾯的属性名必须和UrOrders中定义的属性名相同 -->
lect a.*,b.id oid,number,createtime
from ur a,orders b
where a.id=b.ur_id
彭伯利庄园</lect>
注意这⾥使⽤的是collection标签。
collection部分定义了⽤户关联的订单信息。表⽰关联查询结果集
property="list":关联查询的结果集存储在Ur对象的上哪个属性。
ofType="com.huida.po.Orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使⽤别名,也可以使⽤全限定名。
<id />及<result/>的意义同⼀对⼀查询。
4.测试代码:
package st;
import java.io.IOException;
河北银行招聘import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.management.Query;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.ssion.SqlSession;
import org.apache.ibatis.ssion.SqlSessionFactory;
顿时的近义词是什么
import org.apache.ibatis.ssion.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
PortableInterceptor.USER_EXCEPTION;
import com.huida.mapper.UrMapper;
import com.huida.po.Orders;
import com.huida.po.Ur;
import com.huida.po.UrOrders;
import com.huida.vo.QueryVo;
public class UrMapperTest {
private SqlSessionFactory factory=null;
@Before
public void init() throws Exception{
//通过流将核⼼配置⽂件读取进来
InputStream ResourceAsStream("l");
//通过核⼼配置⽂件输⼊流来创建⼯⼚
factory=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testfindUrAndOrders(){
//创建SqlSession
SqlSession openSession=factory.openSession();
//通过会话的getMapper⽅法来实例化接⼝(实现类的对象)
UrMapper Mapper(UrMapper.class);//参数放接⼝的字节码⽂件 List<Ur> list=urMapper.findUrAndOrders();
for(Ur ur:list){
System.out.Urname()+"...."+ur.getList());
}
}
}