Mybatis动态查询字段及表名的实现

 更新时间:2024年01月19日 11:54:52   作者:天涯___小菜  
本文主要介绍了Mybatis动态查询字段及表名的实现,通过灵活运用Mybatis提供的动态SQL功能,我们可以构建更加灵活、高效的查询语句,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Mapper.java

IPage<Map<String, Object>> getDyData(@Param("page") Page page, @Param("columns")String columns, @Param("tableName")String tableName);

Mapper.xml

<select id="getDyData" resultType="java.util.Map">
select 
     ${columns}
from 
    ${tableName}  dy
</select>

使用场景:

1.我们必须知道查询的表名,可以通过表名查询字段及注释,然后把表名和字段传进mapper

2.如果知道具体查询哪些表,可以把这些表及表对应的字段配置进一张表和字段对应的表中,通过表名查询该表取出对应的字段及注释,此处的字段注释可以自己写相对比较灵活。

DROP TABLE IF EXISTS `table_colume_mapping`;
CREATE TABLE `table_colume_mapping`  (
  `table_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表名',
  `column_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段名',
  `column_comment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段汉语名',
  `table_comment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表名注释',
  `sort` int(10) NULL DEFAULT NULL COMMENT '字段排序',
  `show_column` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '是' COMMENT '是否展示在列',
  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '0存在1删除'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '表字段注释映射' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

调用 

LambdaQueryWrapper<TableColumeMapping> wrapper = new LambdaQueryWrapper<>();
			wrapper.eq(TableColumeMapping::getTableName, "查询的表名");
			List<TableColumeMapping> list = SpringContextHolder.getBean(TableColumeMapping.class).list(wrapper);
Map<String, TableColumeMapping> tableColumeMap = list.stream().collect(Collectors.toMap(TableColumMapperPerson::getColumnName, account -> account));
String columnNames = list.stream().map(item -> "dy."+item.getColumnName()).collect(Collectors.joining(","));
IPage<Map<String, Object>> result = this.baseMapper.getDyData(page,columnNames,"查询的表名");

到此这篇关于Mybatis动态查询字段及表名的实现的文章就介绍到这了,更多相关Mybatis动态查询字段及表名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于elasticsearch的match_phrase_prefix查询详解

    关于elasticsearch的match_phrase_prefix查询详解

    这篇文章主要介绍了关于elasticsearch的match_phrase_prefix查询问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java用list储存,遍历,查询指定信息过程详解

    Java用list储存,遍历,查询指定信息过程详解

    这篇文章主要介绍了Java用list储存,遍历,查询指定信息过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Spring MVC  接受请求参数的方法

    Spring MVC  接受请求参数的方法

    了解HTTP请求的GET和POST方法中如何携带参数,以及SpringMVC中如何接收这些参数,GET方法通过URL传递参数,而POST方法通常在请求体中传递,SpringMVC使用注解如@RequestParam和@RequestBody来绑定参数到控制器方法
    2024-09-09
  • Java enum 对枚举元素的赋值和取值方式

    Java enum 对枚举元素的赋值和取值方式

    这篇文章主要介绍了Java enum 对枚举元素的赋值和取值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • springboot配置redis过程详解

    springboot配置redis过程详解

    这篇文章主要介绍了springboot配置redis过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Elasticsearch Recovery索引分片分配详解

    Elasticsearch Recovery索引分片分配详解

    这篇文章主要为大家介绍了关于Elasticsearch的Recovery索引分片分配详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-04-04
  • Java实现在线SQL编程最新完整版

    Java实现在线SQL编程最新完整版

    这篇文章主要介绍了Java实现在线SQL编程,在使用JDBC来进行数据库的操作,在使用时由于对其方法并不是全部了解,所以需要边看源码边改善功能,感兴趣的朋友跟随小编一起看看吧
    2022-06-06
  • Java实现RedisUtils操作五大集合(增删改查)

    Java实现RedisUtils操作五大集合(增删改查)

    本文主要介绍了Java实现RedisUtils操作五大集合,文中通过示例代码介绍的非常详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • java求最大公约数与最小公倍数的方法示例

    java求最大公约数与最小公倍数的方法示例

    这篇文章主要介绍了java求最大公约数与最小公倍数的方法,涉及java数值运算的相关操作技巧,并附带分析了eclipse环境下设置运行输入参数的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • 谈谈我对Spring Bean 生命周期的理解

    谈谈我对Spring Bean 生命周期的理解

    Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。这篇文章主要介绍了Spring Bean 生命周期,需要的朋友可以参考下
    2018-03-03

最新评论