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 + selenium + OpenCV破解网易易盾滑动验证码的示例
这篇文章主要介绍了使用java + selenium + OpenCV破解网易易盾滑动验证码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02SpringBoot中如何解决读取properties文件读取问题
这篇文章主要介绍了SpringBoot中如何解决读取properties文件读取问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-07-07
最新评论