结合mybatis-plus实现简单不需要写sql的多表查询
项目地址:GITHUB (本地下载)
javamybatis多表查询
简介
实现简单的实体类操作多表, 首先你的项目是使用了mybatis-plus才可以使用
设计说明
- 如何关联表?
找第一张表注解为TableId(mybatis-plus注解)的属性名,到每二张表找同样的属性名,如果没找到,反过来找,如果还没找到,挨个属性找。以此类推,实现关联的前提条件是主从表的关联例名必须一样
//user表 @TableId privateIntegeruserId //address表 @TableId privateIntegeraddressId privateIntegeruserId
使用说明
将com.freedomen.multipselect包放到你的项目中,使com.freedomen.multipselect.mapper里的xml要被扫描到,或手动配置,com.freedomen.multipselect.service也要被发现
//引入service @Autowired privateMultipleServicemultipleService; //表关联,关联用户表和地址表,查找用户表的所有字段和地址表的所有字段 MultipleSelectmultipleSelect=MultipleSelect.newInstance("${1}",newUser(),newAddress()); multipleSelect .where("${0}") .like("userName","张三"); multipleService.mulSelect(multipleSelect);
查找字段
//MultipleSelect.newInstance的第一个参数是所要查找的字段 //${0}或${user}表是第一张表的所有字段${0}.userName或${user}.userName表示userName字段,默认第一张表的字段全部都返回的。${}中间的参数可以是后面实体的下标,也可以是表名如user、user_address //下面是要订单表的所有信息和用户的姓名与号码和地址 MultipleSelect.newInstance("${1}.userName,${1}.userPhone,${2}",newOrders(),newUser(),newAddress());
查找条件
- eq:=
- notEq:!=
- like:LIKE(前置已经加了'%')
- between:between
- and:改变连接方式为AND练级(默认)
- or:改变连接方式为OR
- division:括号
- in:IN
- notIn:NOTIN
- notLike:NOTLIKE
- ...等等
//实例好查找实体后可以操作实体 //注意:如何实体内属性有值将会以eq方式and连接做为where条件 MultipleSelectmultipleSelect=MultipleSelect.newInstance("${1}.userName,${1}.userPhone,${2}",newOrders(),newUser(),newAddress()); multipleSelect .where("${0}")//哪张表 .eq("ordersId",1)//并且订单id=1 .like("ordersName","cmcc")//并且订单名称like''%cmcc' .or()//改变后续操作关系为OR,默认为AND .notEq("orderSno","123");//或者orderSno不等于'123' multipleSelect .where("${1}")//哪张表接着用户表默认and连接可以.or()改为OR .in("userId",[1,2,3]);//并且userIdin[1,2,3] multipleSelect .where("${2}") .or() .like("adressDetails","江苏");//或者地址like'江苏' multipleService.mulSelect(multipleSelect);//查询
排序
//MultipleSelect.setOrderBy(...columns) MultipleSelect.setOrderBy("${1}.ordersNamedesc","${2}.userIdasc",...)
分页
//MultipleSelect.setPage(pageNo,pageSize); MultipleSelect.setPage(1,15);//第一页每页15条
multipleService.mulSelect返回结果
//MultipleResult /*原型 privateList
逻辑删除
//默认是读取mybatis-plus的TableLogic注解0未删除, //如果不是用0表示未删除,可以修改MultipleSelect的setCustomWhere方法中的下面这段中的0 if(logic!=null) sb.append("AND") .append(te.getNickName()) .append(".") .append(logic) .append("=") .append("0");
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。