栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot项目Java中集成Groovy敏捷开发语言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot项目Java中集成Groovy敏捷开发语言

业务背景

通过页面写入SQL, 再通过固定的接口查询, 实现快速开发。因为SQL中需要涉及参数判断来拼接SQL语句,所有此处引入Groovy来实现判断条件的处理。

例如下面的SQL

通过三元表达式判断拼接, 传入了parent_id则只查询它下面的数据

1. 引入依赖

https://github.com/groovy/GMavenPlus/wiki/Examples


    groovy-all
    org.codehaus.groovy
    3.0.9
    pom
2. 创建Groovy文件

3. 代码

具体的语法请移步 Groovy的基本语法_会飞的哈士奇的博客-CSDN博客

package cn.com.baidu.groovy

import javax.script.Bindings
import javax.script.Invocable
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager


class SQLGroovy {

    // 查找并创建指定脚本引擎
    private ScriptEngine engine = new ScriptEngineManager().getEngineByName("groovy");

    String executeFunction(Map params, String querySql){
        // 初始化Bindings
        Bindings bindings = engine.createBindings();
        if(params != null) {
            for(Map.Entry map : params.entrySet()) {
                // 绑定参数
                bindings.put(map.getKey(), map.getValue());
                // bindings.setVariable(map.getKey(), map.getValue());
            }
        }
        // 定义groovy脚本中执行方法的名称
        String scriptName = "executeSQL";
        // 定义groovy脚本内容
        String scriptContent = '''
                    def executeSQL() {
                        def sqlStr = "'''+ querySql + '''";
                        return sqlStr;
                    } 
                ''';
        try {
            // 执行脚本
            engine.eval(scriptContent, bindings);
            // 获取执行结果
            Invocable invocable = (Invocable) engine;
            def result = (String) invocable.invokeFunction(scriptName);
            return result;
        } catch (ScriptException | NoSuchMethodException e) {
            e.printStackTrace();
        }
        return "";
    }

}

4. 编译

如果此时用maven直接编译,在调用.groovy类的地方会编译不通过,提示找不到符号。

这是因为maven无法编译.groovy类导致的这个问题,.groovy类需要引入maven插件来进行单独编译。

pom文件中引入插件
    
        
            
                org.codehaus.gmavenplus
                gmavenplus-plugin
                1.6.1
                
                    UTF-8
                    
                        
                            ${project.basedir}/src/main/java/cn/com/baidu/groovy
                            
                                ***.groovy
                            
                        
                    
                    
                
                
                    
                        
                            addSources
                            addTestSources
                            compile
                            compileTests
                        
                    
                
            
        
    
执行插件gmaven编译groovy文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号