风华绝代·

固定代码+发散思维=天马行空

导航

mybatis中的高级查询

Mybatis作为一个ORM框架,肯定是支持sql高级查询的。

下面的一个案例来为大家详细讲解mybatis中的高级查询。

案例说明:

此案例的业务关系是用户,订单,订单详情与商品之间的关系。

以订单为主,一个订单只能属于一个人,订单和人是一对一的关系。一个订单可以有多个订单详情,订单和订单详情是一对多的关系。一个订单中可以有多个商品,一个商品也可以属于多个订单,订单与商品是多对多的关系。

有如下需求:

 

解决方法:

1.先分析,一共有四个实体,所以肯定要建四张数据表和四个实体类。

一对一查询,两表联合,以订单表为主表,用户表为从表进行笛卡尔积。在xxxMapper.xml文件中进行sql语句编写,如下图

 

 

 用resultMap来定义返回值类型,首先要自定义resultMap标签里的内容,如下图:

 

 在Order实体类中定义一个User属性,生成自己的get/set方法,然后这样就可以返回一个order类型,order包含user,这样就可以同时查询两张表内容,返回到一个类。

测试代码如下:

 

同理,一对多,多对多编程思想一致。由于本人能力有限所以只能理解到这里了。勿怪!!!

 

posted on 2019-10-31 20:38  风华绝代·  阅读(755)  评论(0编辑  收藏  举报