jeecg text2sql小demo
·
总体思路:
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>
如图所示:

代码到此截止。
更多推荐



所有评论(0)