总体思路:
1、让大模型生成sql语句
2、用大模型生成的sql语句去查询数据库

这里面最关键的是给大模型写提示词,让他生成合适的sql语句

代码环节:
第一步:
将这串代码放到一个控制器里,建议放在我是放在SysUserController。你们粘贴的时候肯定会报错的,因为有些方法是写在service里,你们还没拷贝过去,,我这里不报错是因为我已经写完了。

 @PostMapping(value = "/textToSql")
 public Result<List<JSONObject>> textToSql(@RequestBody JSONObject jsonObject, HttpServletRequest request) {
	 String inputStr = jsonObject.getString("inputStr");
	 System.out.println("接收到:"+inputStr);
	 String sql = sysBaseAPI.getSqlText(inputStr);
	 System.out.println("sql语句为:"+ sql);
	 sql=sql.replace("sql","");
	 System.out.println("replace后的sql语句为:"+ sql);
	 List<JSONObject> data = studentService.getDataBySql(sql);
	 return Result.ok(data);
 }
 如图所示:

在这里插入图片描述

**第二步:**
 这行代码拷贝到ISysBaseAPI.java里
 String getSqlText(String inputStr);
 **如图所示:**

在这里插入图片描述

第三步
把这行代码拷贝到ISysBaseAPI的实现类中,
拷贝到SysBaseApiImpl.java文件

   @Override
    public String getSqlText(String inputStr) {
		return airagAppService.getSqlText(inputStr);
    }
**

如图所示:

**
在这里插入图片描述**第四步:**拷贝这行代码到IAiragAppService.java中,

 String getSqlText(String inputStr);

如图所示:在这里插入图片描述
第五步:
将这串代码拷贝到AiragAppServiceImpl.java中

   @Override
    public String getSqlText(String inputStr) {
        FlowRunParams params = new FlowRunParams();
        params.setFlowId("1939264290931171330");
        Map<String, Object> inputs = new HashMap<>();
        inputs.put("content", inputStr);
        params.setInputParams(inputs);
        params.setResponseMode("blocking");
        System.out.println("进入params设置"+params.toString());
        Result<Object> o = (Result<Object>) airagFlowService.runFlow(params);
        System.out.println("大模型返回的"+o.toString());
        String result = (String) o.getResult();
        System.out.println("生成的result"+result);
        result = result
                .replaceAll("```json", "")
                .replaceAll("```sql", "")
                .replaceAll("```", "")
                .replaceAll(";", "")
                .replaceAll("\\.","");
        System.out.println("replaceAll后的的result"+result);
//        return result;
        return JSONObject.parseObject(result).getString("sql");
    }

如图所示:
在这里插入图片描述
截止这里,就是大模型生成的sql。接下来是拿sql去执行,查询出数据

第六步:

将这行代码拷贝到ISysUserService.java里

List<JSONObject> getDataBySql(String sql);

如图所示:
在这里插入图片描述

第七步:

@Override
public List<JSONObject> getDataBySql(String sql) {
	return baseMapper.selectDataList(sql);
}

如图所示:
在这里插入图片描述

第八部:

将这行代码拷贝到SysUserMapper.java中

List<JSONObject> selectDataList(@Param("sql") String sql);

如图所示:
在这里插入图片描述
在这里插入图片描述
第九步:
将这行代码拷贝到SysUserMapper.xml中

<select id="selectDataList" resultType="com.alibaba.fastjson.JSONObject">
    ${sql}
</select>

如图所示:
在这里插入图片描述
代码到此截止。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐