java查找所有用户信息_一对多查询:查询所有用户信息及用户关联的订单信息。...

商品订单数据模型

3566e995d762bb1be6a196f10c0091e6.png

注意:因为一个订单信息只会是一个人下的订单,所以聪哥查询订单信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单。

案例:查询所有用户信息及用户关联的订单信息

用户信息和订单信息为一对多关系。

使用resultMap实现。

1.将存储数据库表orders信息的类Orders对象定义在User对象中(其实本质上就是谁是对应关系前面的一,就将它作为返回类型,将另一个类对象定义在它的里面)。User类的定义内容为:

packagecom.huida.po;importjava.util.Date;importjava.util.List;public classUser {private intid;private String username;//用户姓名

private String sex;//性别

private Date birthday;//生日

private String address;//地址

private Listlist;public ListgetList() {returnlist;

}public void setList(Listlist) {this.list =list;

}public void setId(intid) {this.id =id;

}public voidsetUsername(String username) {this.username =username;

}public voidsetSex(String sex) {this.sex =sex;

}public voidsetBirthday(Date birthday) {this.birthday =birthday;

}public voidsetAddress(String address) {this.address =address;

}public intgetId() {returnid;

}publicString getUsername() {returnusername;

}publicString getSex() {returnsex;

}publicDate getBirthday() {returnbirthday;

}publicString getAddress() {returnaddress;

}

@OverridepublicString toString() {return "User [id=" + id + ", username=" + username + "]";

}

}

2.在UserMapper接口中定义方法:

public List findUserAndOrders();

3.在UserMapper.xml中进行配置:

select a.*,b.id oid,number,createtime

from user a,orders b

where a.id=b.user_id

注意这里使用的是collection标签。

collection部分定义了用户关联的订单信息。表示关联查询结果集

property="list":关联查询的结果集存储在User对象的上哪个属性。

ofType="com.huida.po.Orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。

及的意义同一对一查询。

4.测试代码:

packagecom.huida.test;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;importjavax.management.Query;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Before;importorg.junit.Test;importorg.omg.PortableInterceptor.USER_EXCEPTION;importcom.huida.mapper.UserMapper;importcom.huida.po.Orders;importcom.huida.po.User;importcom.huida.po.UserOrders;importcom.huida.vo.QueryVo;public classUserMapperTest {private SqlSessionFactory factory=null;

@Beforepublic void init() throwsException{//通过流将核心配置文件读取进来

InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml");//通过核心配置文件输入流来创建工厂

factory=newSqlSessionFactoryBuilder().build(inputStream);

}

@Testpublic voidtestfindUserAndOrders(){//创建SqlSession

SqlSession openSession=factory.openSession();//通过会话的getMapper方法来实例化接口(实现类的对象)

UserMapper userMapper=openSession.getMapper(UserMapper.class);//参数放接口的字节码文件

List list=userMapper.findUserAndOrders();for(User user:list){

System.out.println(user.getUsername()+"...."+user.getList());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值