基础示例
本节提供 SuperSQL 的基础使用示例代码。
简单查询
查询所有记录
java
@GetMapping("/all-users")
public List<Map<String, Object>> getAllUsers() {
String question = "查询所有用户";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}条件查询
java
@GetMapping("/users-by-age")
public List<Map<String, Object>> getUsersByAge(@RequestParam int minAge) {
String question = "查询年龄大于" + minAge + "岁的用户";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}模糊查询
java
@GetMapping("/users-by-name")
public List<Map<String, Object>> getUsersByName(@RequestParam String name) {
String question = "查询名字包含" + name + "的用户";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}聚合查询
统计查询
java
@GetMapping("/user-count")
public Map<String, Object> getUserCount() {
String question = "统计用户总数";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}分组统计
java
@GetMapping("/users-by-age-group")
public List<Map<String, Object>> getUsersByAgeGroup() {
String question = "按年龄段统计用户数量";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}求和查询
java
@GetMapping("/total-age")
public Map<String, Object> getTotalAge() {
String question = "计算所有用户的年龄总和";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}排序和分页
排序查询
java
@GetMapping("/users-sorted")
public List<Map<String, Object>> getUsersSorted(@RequestParam String field) {
String question = "按" + field + "降序排列所有用户";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}分页查询
java
@GetMapping("/users-paged")
public List<Map<String, Object>> getUsersPaged(
@RequestParam int page,
@RequestParam int size) {
String question = "查询第" + page + "页,每页" + size + "条用户";
String sql = sqlEngine.setChatModel(chatModel)
.generateSql(question);
return sqlEngine.executeSql(sql);
}完整示例
用户查询服务
java
@Service
@RequiredArgsConstructor
public class UserQueryService {
private final SpringSqlEngine sqlEngine;
private final ChatModel chatModel;
public List<Map<String, Object>> getAllUsers() {
String sql = sqlEngine.setChatModel(chatModel)
.generateSql("查询所有用户");
return sqlEngine.executeSql(sql);
}
public List<Map<String, Object>> getUsersByAge(int minAge) {
String sql = sqlEngine.setChatModel(chatModel)
.generateSql("查询年龄大于" + minAge + "岁的用户");
return sqlEngine.executeSql(sql);
}
public List<Map<String, Object>> getUsersByName(String name) {
String sql = sqlEngine.setChatModel(chatModel)
.generateSql("查询名字包含" + name + "的用户");
return sqlEngine.executeSql(sql);
}
public Map<String, Object> getUserCount() {
String sql = sqlEngine.setChatModel(chatModel)
.generateSql("统计用户总数");
return sqlEngine.executeSql(sql);
}
}用户查询控制器
java
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final UserQueryService queryService;
@GetMapping
public ResponseEntity<?> getAllUsers() {
try {
List<Map<String, Object>> users = queryService.getAllUsers();
return ResponseEntity.ok(users);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", e.getMessage()));
}
}
@GetMapping("/age/{minAge}")
public ResponseEntity<?> getUsersByAge(@PathVariable int minAge) {
try {
List<Map<String, Object>> users = queryService.getUsersByAge(minAge);
return ResponseEntity.ok(users);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", e.getMessage()));
}
}
@GetMapping("/name/{name}")
public ResponseEntity<?> getUsersByName(@PathVariable String name) {
try {
List<Map<String, Object>> users = queryService.getUsersByName(name);
return ResponseEntity.ok(users);
}) catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", e.getMessage()));
}
}
@GetMapping("/count")
public ResponseEntity<?> getUserCount() {
try {
Map<String, Object> count = queryService.getUserCount();
return ResponseEntity.ok(count);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", e.getMessage()));
}
}
}