mybatis

您所在的位置:网站首页 select语句多表查询 mybatis

mybatis

2023-03-17 01:25| 来源: 网络整理| 查看: 265

mybatis-plus如何实现多表查询 发布时间:2021-07-22 14:23:51 来源:亿速云 阅读:1529 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关mybatis-plus如何实现多表查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

java mybatis 多表查询

简介

实现简单的实体类操作多表,  首先你的项目是使用了mybatis-plus 才可以使用

设计说明

如何关联表?

找第一张表注解为 TableId (mybatis-plus 注解)的属性名, 到每二张表找同样的属性名, 如果没找到,反过来找,如果还没找到,挨个属性找。以此类推,实现关联的前提条件是 主从表的关联例名必须一样

// user 表 @TableId private Integer userId // address 表 @TableId private Integer addressId private Integer userId

使用说明

将 com.freedomen.multipselect 包放到你的项目中,使 com.freedomen.multipselect.mapper里的xml 要被扫描到,或手动配置, com.freedomen.multipselect.service也要被发现

//引入service @Autowired private MultipleService multipleService; //表关联, 关联用户表和地址表,查找 用户表的所有字段和地址表的所有字段 MultipleSelect multipleSelect = MultipleSelect.newInstance("${1}", new User(), new Address()); 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}", new Orders(), new User(), new Address());

查找条件

eq: =

notEq: !=

like: LIKE (前置已经加了 '%')

between: between

and: 改变连接方式为 AND练级(默认)

or: 改变 连接方式为 OR

division:括号

in: IN

notIn: NOT IN

notLike: NOT LIKE

...等等

//实例好 查找实体后可以操作实体 //注意: 如何实体内属性有值 将会以 eq方式and连接做为where 条件 MultipleSelect multipleSelect = MultipleSelect.newInstance("${1}.userName,${1}.userPhone,${2}", new Orders(), new User(), new Address()); 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]); // 并且userId in [1, 2, 3]   multipleSelect  .where("${2}")  .or()  .like("adressDetails", "江苏"); //或者 地址 like '江苏' multipleService.mulSelect(multipleSelect); //查询

排序

//MultipleSelect.setOrderBy(...columns) MultipleSelect.setOrderBy("${1}.ordersName desc", "${2}.userId asc", ...)

分页

//MultipleSelect.setPage(pageNo, pageSize); MultipleSelect.setPage(1, 15); //第一页 每页 15条

multipleService.mulSelect返回结果

//MultipleResult /* 原型  private List data; //结果数据  private Integer pageNo;  //如果设置了分页 会有  private Integer pageSize;  //如果设置了分页 会有  private Integer total;  //如果设置了分页 会有 */

逻辑删除

//默认是读取 mybatis-plus 的 TableLogic 注解 0 未删除, //如果不是用 0 表示未删除, 可以修改 MultipleSelect 的 setCustomWhere 方法中的下面这段中的 0    if (logic != null)  sb.append(" AND ")  .append(te.getNickName())  .append(".")  .append(logic)  .append(" = ")  .append("0");

感谢各位的阅读!关于“mybatis-plus如何实现多表查询”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读: MySQL中如何实现多表查询操作 Hibernate中如何实现多表查询

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis-plus 上一篇新闻:nodejs+mongodb aggregate级联查询的示例分析 下一篇新闻:如何解决Boostrap栅格系统与自己额外定义媒体查询的冲突问题 猜你喜欢 Spring Boot中的权限系统如何利用Spring Security 进行构建 Java中高精度整数与高精度小数的区别有哪些 怎么在java项目中实现一个链栈存储 如何在Java项目中利用jdbc-odbc桥接方式来连接数据库 利用java怎么实现一个网页爬虫功能 Java中protobuf与avro的区别是什么 使用Spring MVC与Mybatis如何对Mysql数据库进行分页查询 利用java如何去掉文本中的空格与空行 java中字符流缓冲区的作用是什么 Java对象的序列化与反序列化详解


【本文地址】


今日新闻


推荐新闻


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