Mybatis動態(tài)查詢字段及表名的實現(xiàn)
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.我們必須知道查詢的表名,可以通過表名查詢字段及注釋,然后把表名和字段傳進(jìn)mapper
2.如果知道具體查詢哪些表,可以把這些表及表對應(yīng)的字段配置進(jìn)一張表和字段對應(yīng)的表中,通過表名查詢該表取出對應(yīng)的字段及注釋,此處的字段注釋可以自己寫相對比較靈活。
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;
調(diào)用
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,"查詢的表名");
到此這篇關(guān)于Mybatis動態(tài)查詢字段及表名的實現(xiàn)的文章就介紹到這了,更多相關(guān)Mybatis動態(tài)查詢字段及表名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用mybatis-plus-generator進(jìn)行代碼自動生成的方法
這篇文章主要介紹了使用mybatis-plus-generator進(jìn)行代碼自動生成的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06一文帶你學(xué)會Java網(wǎng)絡(luò)編程
網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個設(shè)備(計算機(jī))的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。這篇文章將帶大家深入了解一下Java的網(wǎng)絡(luò)編程,需要的可以了解一下2022-08-08詳解如何將Spring Boot應(yīng)用跑在Docker容器中
這篇文章主要介紹了詳解如何將Spring Boot應(yīng)用跑在Docker容器中,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07java實現(xiàn)字符串匹配求兩個字符串的最大公共子串
這篇文章主要介紹了java實現(xiàn)求兩個字符串最大公共子串的方法,詳細(xì)的描述了兩個字符串的最大公共子串算法的實現(xiàn),需要的朋友可以參考下2016-10-10Java設(shè)計模式之享元模式(Flyweight Pattern)詳解
享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設(shè)計模式,旨在減少對象的數(shù)量,以節(jié)省內(nèi)存空間和提高性能,本文將詳細(xì)的給大家介紹一下Java享元模式,需要的朋友可以參考下2023-07-07