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动态查询字段及表名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基于ArrayList实现群主发红包功能

    Java基于ArrayList实现群主发红包功能

    这篇文章主要介绍了Java基于ArrayList实现群主发红包功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 详解java中的static关键字

    详解java中的static关键字

    这篇文章主要介绍了java中的static关键字的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java防止xss攻击附相关文件下载

    Java防止xss攻击附相关文件下载

    首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的朋友可以参考下
    2020-02-02
  • SpringBoot SSMP 整合案例分享

    SpringBoot SSMP 整合案例分享

    这篇文章主要介绍了SpringBoot SSMP 整合案例分享,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java基于迭代器模式实现的访问人员列表操作示例

    Java基于迭代器模式实现的访问人员列表操作示例

    这篇文章主要介绍了Java基于迭代器模式实现的访问人员列表操作,简单描述了迭代器模式的概念、原理以及使用迭代器模式实现访问人员列表的相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • 解决springboot responseentity<string>乱码问题

    解决springboot responseentity<string>乱码问题

    这篇文章主要介绍了解决springboot responseentity<string>乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java语言ReadWriteLock特性实例测试

    Java语言ReadWriteLock特性实例测试

    这篇文章主要介绍了Java语言ReadWriteLock特性实例测试,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 浅析如何在IDEA中高效使用Test注解进行单元测试

    浅析如何在IDEA中高效使用Test注解进行单元测试

    在软件开发过程中,单元测试是保证代码质量的重要手段之一,那么如何在IDEA中高效使用Test注解进行单元测试呢,下面小编就来和大家简单讲讲
    2025-04-04
  • Java中Mybatis-Plus使用方式介绍

    Java中Mybatis-Plus使用方式介绍

    Mybatis-Plus提供了多种方式来执行SQL,包括使用注解、XML映射文件和 Lambda表达式等,其中,使用Lambda表达式是Mybatis-Plus推荐的方式,因为它更加直观和类型安全,,需要的朋友可以参考下
    2023-06-06
  • IDEA代码规范&质量检查的实现

    IDEA代码规范&质量检查的实现

    这篇文章主要介绍了IDEA代码规范&质量检查的实现,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论