Mybatis作为一个ORM框架,肯定是支持sql高级查询的。
下面的一个案例来为大家详细讲解mybatis中的高级查询。
案例说明:
此案例的业务关系是用户,订单,订单详情与商品之间的关系。
以订单为主,一个订单只能属于一个人,订单和人是一对一的关系。一个订单可以有多个订单详情,订单和订单详情是一对多的关系。一个订单中可以有多个商品,一个商品也可以属于多个订单,订单与商品是多对多的关系。
有如下需求:
解决方法:
1.先分析,一共有四个实体,所以肯定要建四张数据表和四个实体类。
一对一查询,两表联合,以订单表为主表,用户表为从表进行笛卡尔积。在xxxMapper.xml文件中进行sql语句编写,如下图
用resultMap来定义返回值类型,首先要自定义resultMap标签里的内容,如下图:
在Order实体类中定义一个User属性,生成自己的get/set方法,然后这样就可以返回一个order类型,order包含user,这样就可以同时查询两张表内容,返回到一个类。
测试代码如下:
同理,一对多,多对多编程思想一致。由于本人能力有限所以只能理解到这里了。勿怪!!!