新一代国产 ORM 框架 sagacity-sqltoy-5.1.10 发版,统一授权传参和越权校验

开源地址:

更新内容

1、增加统一数据权限传参和越权检查,参照文档统一字段处理章节配置
2、兼容sql中参数名称含中文的特殊场景
3、@loop(:paramName,sql片段)支持类似:staffInfos[i].birthday 对象子属性模式,为应对极端场景提供策略
4、代替group_concat的link对应的id-column改为id-columns支持多列分组(依旧兼容id-column)

qltoy的关键优势:

//------------------了解 sqltoy的关键优势: -------------------------------------------------------------------------------------------*/
//1、最简最直观的sql编写方式(不仅仅是查询语句),采用条件参数前置处理规整法,让sql语句部分跟客户端保持高度一致
//2、sql中支持注释(规避了对hint特性的影响,知道hint吗?搜oracle hint),和动态更新加载,便于开发和后期维护整个过程的管理
//3、支持缓存翻译和反向缓存条件检索(通过缓存将名称匹配成精确的key),实现sql简化和性能大幅提升
//4、支持快速分页和分页优化功能,实现分页最高级别的优化,同时还考虑到了cte多个with as情况下的优化支持
//5、支持并行查询
//6、根本杜绝sql注入问题
//7、支持行列转换、分组汇总求平均、同比环比计算,在于用算法解决复杂sql,同时也解决了sql跨数据库问题
//8、支持保留字自动适配
//9、支持跨数据库函数自适配,从而非常有利于一套代码适应多种数据库便于产品化,比如oracle的nvl,当sql在mysql环境执行时自动替换为ifnull
//10、支持分库分表
//11、提供了取top、取random记录、树形表结构构造和递归查询支持、updateFetch单次交互完成修改和查询等实用的功能
//12、sqltoy的update、save、saveAll、load 等crud操作规避了jpa的缺陷,参见update(entity,String...forceUpdateProps)和updateFetch
//13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等
//14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作
//-----------------------------------------------------------------------------------*/

sqltoy特点介绍:

  • sqltoy的核心构建思想

  • sqltoy的对比mybatis(plus)和fluent mybatis的核心点:查询语句编写、可阅读性、可维护性

  • 对象化crud是基础,但sqltoy有针对性的改进:update、updateSaveFetch、updateFetch等

  • sqltoy的缓存翻译,大幅减少表关联简化sql,让你的查询性能成几何级提升

阐述sqltoy为什么秒杀mybatis(plus)

  • 极致的分页,同样帮助你实现查询的性能大幅提升
  1. 快速分页:@fast() 实现先取单页数据然后再关联查询,极大提升速度
  2. 分页优化器:page-optimize 让分页查询由两次变成1.3~1.5次(用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询
  3. sqltoy的分页取总记录的过程不是简单的select count(1) from (原始sql);而是智能判断是否变成:select count(1) from 'from后语句', 并自动剔除最外层的order by
  4. sqltoy支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能

阐述sqltoy为什么秒杀mybatis(plus)

  • 便利的跨数据库统计计算:数据旋转

阐述sqltoy为什么秒杀mybatis(plus)

  • 便利的跨数据库统计计算:无限极分组统计(含汇总求平均)

阐述sqltoy为什么秒杀mybatis(plus)

  • 便利的跨数据库统计计算:同比环比

阐述sqltoy为什么秒杀mybatis(plus)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sagacity-Sqltoy是一个轻量级的Java持久化框架,提供了许多便利的工具和功能来简化数据库操作。下面是一个简单的示例,演示如何使用Sagacity-Sqltoy框架进行持久化操作。 1. 首先需要在pom.xml中添加以下依赖: ```xml <dependency> <groupId>org.sagacity</groupId> <artifactId>sagacity-sqltoy-all</artifactId> <version>{latest-version}</version> </dependency> ``` 2. 创建一个实体类,用于映射数据库表。 ```java @Table(name = "user") public class User implements Serializable { @Id(name = "user_id") private Long userId; @Column(name = "user_name") private String userName; @Column(name = "password") private String password; // getter and setter } ``` 3. 创建一个Dao类,用于进行数据库操作。 ```java @Repository("userDao") public class UserDao extends BaseDaoImpl<User, Long> { /** * 根据用户名查询用户信息 * * @param userName 用户名 * @return 用户信息 */ public User getUserByName(String userName) { return this.findOneBySql("select * from user where user_name=?", new Object[]{userName}); } /** * 新增用户信息 * * @param user 用户信息 */ public void saveUser(User user) { this.save(user); } } ``` 4. 在Spring配置文件中配置数据源和Dao类。 ```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <bean id="sqlToyContext" class="org.sagacity.sqltoy.SqlToyContext"> <property name="dataSource" ref="dataSource"/> <property name="showSql" value="true"/> <property name="dialect" value="mysql"/> </bean> <bean id="userDao" class="com.example.dao.UserDao"> <property name="sqlToyContext" ref="sqlToyContext"/> </bean> ``` 5. 在代码中使用Dao类进行数据库操作。 ```java @Autowired private UserDao userDao; public void test() { // 新增用户信息 User user = new User(); user.setUserName("test"); user.setPassword("123456"); userDao.saveUser(user); // 根据用户名查询用户信息 User user1 = userDao.getUserByName("test"); System.out.println(user1); } ``` 以上就是一个简单的Sagacity-Sqltoy框架的示例,演示了如何使用该框架进行持久化操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值