mybatis的3种关联映射查询

您所在的位置:网站首页 mybatis的多对多关联映射中要用到多少张数据表 mybatis的3种关联映射查询

mybatis的3种关联映射查询

2024-07-03 08:04| 来源: 网络整理| 查看: 265

一对一查询: 

查询所有订单和用户信息。

一个订单信息只会是一个人下的订单,所以从查询订单信息 出发关联查询用户信息为一对一查询。

一对多查询:

查询所有订单信息及订单下的订单明细信息,订单信息与订单明细为一对多关系。

多对多查询:

查询所有用户信息,关联查询订单及订单明细信息 ,订单明细信息中关联查询商品信息。

一个用户对应多个订单,一个订单对应多个明细,一个订单明细对应一个商品。

 

返回类型可以用 resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用!

 

--用一个小案例来对上面所说的进行实际操作--

项目目录:

首先,创建4个实体类,对应四张表

用户表: 

商品表:

订单表:

 

订单详情表:

 

一对一关联映射查询:

OrderMapper.xml 

select o.id oids,o.orderid,o.createtime,o.note,u.id uids,u.username,u.birthday,u.address from orders o,t_user u where o.userid=u.id

Test:

public class OrderTest { public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); OrdersMapper orderMapper = session.getMapper(mapper.OrdersMapper.class); List orders = orderMapper.selectOrderAndUser(); for (Orders string : orders) { System.out.println(string.toString()); } } }

查询后得到的内容:

一对多关联映射查询:

OrderMapper.xml

select o.id oids,o.orderid,o.createtime ocreatetime,o.note, u.id uids,u.username,u.birthday,u.address, od.id odid,od.itemsid,od.itemsnum, i.id iid,i.name,i.price,i.pic,i.createtime icreatetime,i.detail from orders o,t_user u,orderdetail od,items i where o.userid=u.id and o.id=od.ordersid and i.id=od.itemsid

Test:

public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); OrdersMapper orderMapper = session.getMapper(mapper.OrdersMapper.class); List orders = orderMapper.selectOrdersAndOrdersDetail(); for (Orders string : orders) { System.out.println(string.toString()); } }

查询后得到的内容:

多对多关联映射查询:

UserMapper.xml

select o.id oids,o.orderid,o.createtime ocreatetime,o.note, u.id,u.username,u.birthday,u.address, od.id odid,od.itemsid,od.itemsnum, i.id iid,i.name,i.price,i.pic,i.createtime icreatetime,i.detail from orders o,t_user u,orderdetail od,items i where o.userid=u.id and o.id=od.ordersid and i.id=od.itemsid

 Test:

public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); UserMapper userMapper = session.getMapper(mapper.UserMapper.class); List user = userMapper.selectUserAndOrdersAndOrderDetailAndItems(); for (User user2 : user) { System.out.println(user2.toString()); } }

查询后得到的内容:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3