Sagacity-SqlToy 开源项目教程
sagacity-sqltoy项目地址:https://gitcode.com/gh_mirrors/sag/sagacity-sqltoy
项目介绍
Sagacity-SqlToy 是一个 Java 的 ORM 框架,它融合了 JPA 功能和最佳的 SQL 编写及查询模式。该框架独创了缓存翻译、最优化的分页查询,并提供了无限层级分组汇总、同比环比、行列转换、树形排序汇总等功能。SqlToy 还支持 SQL 自适配不同数据库、分库分表、多租户、数据加解密和脱敏等高级特性,适用于复杂业务和大规模数据分析的场景。
项目快速启动
创建 Spring Boot 项目
首先,创建一个新的 Spring Boot 项目,并添加 SqlToy 依赖。
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>最新版本</version>
</dependency>
配置 SqlToy
在 application.properties
文件中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
生成 POJO 类
使用 quickvo
工具通过数据库生成 POJO 类:
quickvo -config quickvo.xml
第一个对象 CRUD
创建一个简单的 CRUD 操作示例:
@Repository
public interface UserRepository extends SqlToyRepository<User, Long> {
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User saveUser(User user) {
return userRepository.save(user);
}
public User findUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
}
第一个简单查询
在 resources/sql
目录下创建一个 SQL 文件 user.sql
:
<sql id="findUserById">
<value>
SELECT * FROM user WHERE id = :id
</value>
</sql>
在服务类中使用该查询:
public User findUserById(Long id) {
return userRepository.findBySql("findUserById", Collections.singletonMap("id", id));
}
应用案例和最佳实践
缓存翻译
SqlToy 提供了强大的缓存翻译功能,可以在查询结果中自动替换缓存中的数据,例如将用户 ID 替换为用户名:
<sql id="getUserList">
<value>
SELECT id, name, department_id FROM user
</value>
<translate cache="departments" columns="department_id" cache-type="DEPARTMENT"/>
</sql>
分页查询
SqlToy 提供了最优化的分页查询,支持多种数据库的分页语法:
public Page<User> getUserPage(int pageNo, int pageSize) {
return userRepository.findPageBySql("getUserList", null, pageNo, pageSize);
}
典型生态项目
SqlToy-Online-Doc
SqlToy-Online-Doc 是一个在线文档项目,提供了详细的 SqlToy 使用手册和 API 文档,方便开发者快速上手和查阅:
SqlToy-HelloWorld
SqlToy-HelloWorld 是一个示例项目,展示了如何快速集成和使用 SqlToy,适合初学者学习和参考:
通过这些生态项目,开发者可以更好地理解和应用 SqlToy,提高开发效率和代码质量。
sagacity-sqltoy项目地址:https://gitcode.com/gh_mirrors/sag/sagacity-sqltoy