Skip to content

基础示例

本节提供 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()));
        }
    }
}

下一步

最近更新

基于 Apache 2.0 许可证发布