# 在线文档
## [sqltoy-online-doc 网友海贝(hugo)提供](https://www.kancloud.cn/hugoxue/sql_toy/2390352)
## [xml中sql完整配置](https://github.com/sagframe/sqltoy-online-doc/blob/master/docs/sqltoy/search.md)
# [github地址](https://github.com/sagframe/sagacity-sqltoy)
# [sqltoy Lambda](https://gitee.com/gzghde/sqltoy-plus)
# [sqltoy管理系统脚手架](https://gitee.com/momoljw/sss-rbac-admin)
# WORD版详细文档(完整)
## 请见:docs/睿智平台SqlToy5.2 使用手册.doc
# 范例演示项目
## 快速集成演示项目
* https://gitee.com/sagacity/sqltoy-helloworld
* 阅读其readme.md学习
## 快速上手项目
* https://gitee.com/sagacity/sqltoy-quickstart
* 阅读其readme.md学习
## POJO和DTO 严格分层演示项目
* https://gitee.com/sagacity/sqltoy-strict
## sharding分库分表演示
* https://gitee.com/sagacity/sqltoy-showcase/tree/master/trunk/sqltoy-sharding
## dynamic-datasource多数据源范例
* https://gitee.com/sagacity/sqltoy-showcase/tree/master/trunk/sqltoy-dynamic-datasource
## nosql演示(mongodb和elasticsearch)
* https://gitee.com/sagacity/sqltoy-showcase/tree/master/trunk/sqltoy-nosql
## sqltoy基于xml配置演示
* https://gitee.com/sagacity/sqltoy-showcase/tree/master/trunk/sqltoy-showcase
# QQ 交流群:531812227
# 最新版本
* 5.3.28 (jdk17+ springboot3.x) 发版日期: 2023-06-13
* 5.2.54 (jdk1.8) 发版日期: 2023-06-13
# 历史版本(EOF)
* 5.1.73 发版日期: 2023-06-16
* 4.20.67 发版日期: 2023-06-16
# 1. 前言
## 1.1 sqltoy-orm是什么
sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能,越复杂优势越凸显。
支持以下数据库:
* oracle11g+、db2(9.5+)、sqlserver2012+、postgresql9.5+、mysql5.6+(mariadb/innosql)
* sqlite、H2
* DM达梦数据库、kingbase
* elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本
* clickhouse、StarRocks、greenplum、impala(kudu)
* oceanBase、polardb、guassdb、tidb
* mongodb (只支持查询)
* 其他数据库支持基于jdbc的sql执行(查询和自定义sql的执行)
# 2. 快速特点说明
## 2.1 对象操作跟jpa类似并有针对性加强(包括级联)
* 通过quickvo工具从数据库生成对应的POJO,引入sqlltoy自带的SqlToyLazyDao即可完成全部操作
```java
StaffInfoVO staffInfo = new StaffInfoVO();
//保存
sqlToyLazyDao.save(staffInfo);
//删除
sqlToyLazyDao.delete(new StaffInfoVO("S2007"));
//public Long update(Serializable entity, String... forceUpdateProps);
// 这里对photo 属性进行强制修改,其他为null自动会跳过
sqlToyLazyDao.update(staffInfo, "photo");
//深度修改,不管是否null全部字段修改
sqlToyLazyDao.updateDeeply(staffInfo);
List<StaffInfoVO> staffList = new ArrayList<StaffInfoVO>();
StaffInfoVO staffInfo = new StaffInfoVO();
StaffInfoVO staffInfo1 = new StaffInfoVO();
staffList.add(staffInfo);
staffList.add(staffInfo1);
//批量保存或修改
sqlToyLazyDao.saveOrUpdateAll(staffList);
//批量保存
sqlToyLazyDao.saveAll(staffList);
...............
sqlToyLazyDao.loadByIds(StaffInfoVO.class,"S2007")
//唯一性验证
sqlToyLazyDao.isUnique(staffInfo, "staffCode");
```
## 2.2 支持代码中对象查询
* sqltoy 中统一的规则是代码中可以直接传sql也可以是对应xml文件中的sqlId
```java
/**
* @todo 通过对象传参数,简化paramName[],paramValue[] 模式传参
* @param <T>
* @param sqlOrNamedSql 可以是具体sql也可以是对应xml中的sqlId
* @param entity 通过对象传参数,并按对象类型返回结果
*/
public <T extends Serializable> List<T> findBySql(final String sqlOrNamedSql, final T entity);
```
* 基于对象单表查询,并带缓存翻译
```java
public Page<StaffInfoVO> findStaff(Page<StaffInfoVO> pageModel, StaffInfoVO staffInfoVO) {
// sql可以直接在代码中编写,复杂sql建议在xml中定义
// 单表entity查询场景下sql字段可以写成java类的属性名称
return findPageEntity(pageModel, StaffInfoVO.class, EntityQuery.create()
.where("#[staffName like :staffName]#[and createTime>=:beginDate]#[and createTime<=:endDate]")
.values(staffInfoVO));
}
```
* 对象式查询后修改或删除
```java
//演示代码中非直接sql模式设置条件模式进行记录修改
public Long updateByQuery() {
return sqlToyLazyDao.updateByQuery(StaffInfoVO.class,
EntityUpdate.create().set("createBy", "S0001")
.where("staffName like ?").values("张"));
}
//代码中非直接sql模式设置条件模式进行记录删除
sqlToyLazyDao.deleteByQuery(StaffInfoVO.class, EntityQuery.create().where("status=?").values(0));
```
## 2.3 极致朴素的sql编写方式
* sqltoy 的写法(一眼就看明白sql的本意,后面变更调整也非常便捷,copy到数据库客户端里稍作调整即可执行)
* sqltoy条件组织原理很简单: 如 #[order_id=:orderId] 等于if(:orderId<>null) sql.append(order_id=:orderId);#[]内只要有一个参数为null即剔除
* 支持多层嵌套:如 #[and t.order_id=:orderId #[and t.order_type=:orderType]]
* 条件判断保留#[@if(:param>=xx ||:param<=xx1) sql语句] 这种@if()高度灵活模式,为特殊复杂场景下提供便利
```xml
//1、 条件值处理跟具体sql分离
//2、 将条件值前置通过filters 定义的通用方法加工规整(大多数是不需要额外处理的)
<sql id="show_case">
<filters>
<!-- 参数statusAry只要包含-1(代表全部)则将statusAry设置为null不参与条件检索 -->
<eq params="statusAry" value="-1" />
</filters>
<value><![CDATA[
select *
from sqltoy_device_order_info t
where #[t.status in (:statusAry)]
#[and t.ORDER_ID=:orderId]
-- sqltoy的in 超过1000会自动切割成(t.field in (1~1000) or t.field in (1001~2000))
#[and t.ORGAN_ID in (:authedOrganIds)]
#[and t.STAFF_ID in (:staffIds)]
#[and t.TRANS_DATE>=:beginAndEndDate[0]]
#[and t.TRANS_DATE<:beginAndEndDate[1]]
#[and (t.TECH_GROUP,t.PROD_GROUP) in (:techGroups,:prodGroups)]
#[order by @value(:orderField) @value(:orderWay)]
]]></value>
</sql>
```
* 同等功能mybatis写法
```xml
<select id="show_case" resultMap="BaseResultMap">
select *
from sqltoy_device_order_info t
<where>
<if test="statusAry!=null">
and t.status in
<foreach collection="statusAry" item="status" separator="," open="(" close=")">
#{status}
</foreach>
</if>
<if test="orderId!=null">
and t.ORDER_ID=#{orderId}
</if>
<if test="authedOrganIds!=null">
and t.ORGAN_ID in
<foreach collection="authedOrganIds" item="organ_id" separator="," open="(" close=")">
#{order_id}
</foreach>
</if>
<if test="staffIds!=null">
and t.STAFF_ID in
<foreach collection="staffIds" item="staff_id" separator="," open="(" close=")">
#{staff_id}
</foreach>
</if>
<if test="beginDate!=null">
and t.TRANS_DATE>=#{beginDate}
</if>
<if test="endDate!=null">
and t.TRANS_DATE<#{endDate}
</if>
</where>
</select>
```
## 2.4 天然防止sql注入,执行过程:
* 假设sql语句如下
```sql
select *
from sqltoy_device_order_info t
where #[t.ORGAN_ID in (:authedOrganIds)]
#[and t.TRANS_DATE>=:beginDate]
#[and t.TRANS_DATE<:endDate]
```
* java调用过程
```java
sqlToyLazyDao.findBySql(sql, MapKit.keys("authedOrganIds","beginDate", "endDate").values(authedOrganIdAry,beginDate,null),
DeviceOrderInfoVO.class);
```
* 最终执行的sql是这样的:
```sql
select *
from sqltoy_device_order_info t
where t.ORDER_ID=?
and t.ORGAN_ID in (?,?,?)
and t.TRANS_DATE>=?
```
* 然后通过: pst.set(index,value) 设置条件值
## 2.5 最为极致的分
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1 sqltoy-orm是什么 sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能。 支持以下数据库: oracle 11g+ db2 9.5+,建议从10.5 开始 mysql(mariadb/innosql)支持5.6、5.7、8.0 版本 postgresql 9.5+ sqlserver 2012+ sqlite、H2 elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本 clickhouse、StarRocks(原dorisdb)、tidb、greenplum oceanBase、guassdb、kingbase、DM达梦数据库 mongodb (只支持查询)、impala(kudu) 其他数据库支持基于jdbc的sql执行(查询和自定义sql的执行) 2. 快速特点说明 2.1 对象操作跟jpa类似并有针对性加强(包括级联) 通过quickvo工具从数据库生成对应的POJO,
资源推荐
资源详情
资源评论
收起资源包目录
sqltoy-orm框架系统是比hibernate+myBatis更加贴合项目的orm框架.rar (393个子文件)
mvn-build.bat 55B
mvn-build.bat 55B
mvn-install.bat 51B
mvn-install.bat 51B
mvn-deploy.bat 50B
mvn-deploy.bat 50B
睿智平台SqlToy5.2使用手册.doc 18.98MB
spring.factories 116B
.gitignore 568B
.gitignore 249B
.gitignore 84B
说明.htm 4KB
org.springframework.boot.autoconfigure.AutoConfiguration.imports 53B
DialectUtils.java 124KB
DialectFactory.java 96KB
SqlToyDaoSupport.java 91KB
ResultUtils.java 71KB
BeanUtil.java 70KB
SqlUtil.java 66KB
SqlXMLConfigParse.java 61KB
ParamFilterUtils.java 55KB
SqlConfigParseUtils.java 47KB
SqlServerDialectUtils.java 46KB
EntityManager.java 37KB
SqlToyContext.java 34KB
CollectionUtil.java 33KB
SqlToyLazyDao.java 33KB
DefaultDialectUtils.java 30KB
StringUtil.java 28KB
ClickHouseDialectUtils.java 27KB
LightDao.java 26KB
SqlToyLazyDaoImpl.java 26KB
FileUtil.java 24KB
Oracle11gDialect.java 24KB
DialectExtUtils.java 22KB
NumberUtil.java 22KB
MongoElasticUtils.java 22KB
SqlServerDialect.java 21KB
DB2Dialect.java 21KB
ShardingUtils.java 20KB
OracleDialect.java 20KB
SqltoyAutoConfiguration.java 20KB
KingbaseDialect.java 20KB
GaussDBDialect.java 19KB
OceanBaseDialect.java 19KB
DateUtil.java 19KB
MySqlDialect.java 19KB
TranslateConfigParse.java 19KB
PostgreSqlDialect.java 19KB
DMDialect.java 18KB
DataSourceUtils.java 18KB
TidbDialect.java 18KB
SqliteDialect.java 18KB
ImpalaDialect.java 18KB
LightDaoImpl.java 17KB
EntityMeta.java 17KB
OracleDialectUtils.java 17KB
QueryExecutorBuilder.java 16KB
TranslateManager.java 15KB
MapperUtils.java 15KB
MacroIfLogic.java 15KB
TranslateFactory.java 15KB
SqlLoop.java 15KB
SqlToyConfig.java 15KB
DefaultDialect.java 14KB
SqlScriptLoader.java 14KB
ElasticSearchUtils.java 14KB
SqlConfigParseUtilsTest.java 14KB
Dialect.java 14KB
SqlToyConstants.java 13KB
SqlToyContextProperties.java 13KB
Mongo.java 13KB
QueryExecutor.java 13KB
SqlExecuteStat.java 13KB
BeanUtilTest.java 13KB
AbstractStaffInfo.java 12KB
ScanEntityAndSqlResource.java 12KB
ClickHouseDialect.java 11KB
SqlToyCRUDServiceImpl.java 11KB
EntityQuery.java 10KB
XMLUtil.java 10KB
PostgreSqlDialectUtils.java 10KB
ParamFilterModel.java 10KB
UnpivotList.java 10KB
SqlUtilsExt.java 10KB
ElasticEndpoint.java 10KB
H2Dialect.java 10KB
Query.java 9KB
SqlToyCRUDService.java 9KB
HttpClientUtils.java 9KB
TDengineDialect.java 8KB
CacheUpdateWatcher.java 8KB
IdUtil.java 8KB
ExpressionUtil.java 8KB
StringUtilsTest.java 8KB
DefaultShardingStrategy.java 7KB
ElasticSearchPlugin.java 7KB
RowsChainRelative.java 7KB
MacroUtils.java 7KB
FunctionUtils.java 7KB
共 393 条
- 1
- 2
- 3
- 4
资源评论
野生的狒狒
- 粉丝: 1494
- 资源: 1530
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功