远超mybatis的sqltoy4.15.3 发版

开源地址:

更新内容:

     // 在代码中实现单表查询,字段名称可以是对象属性名称,也可以直接是数据库字段名称
		// 1、可指定特定字段
		// 2、提供了分页和非分页两种
		// 3、可以排序
		// 4、可以进行缓存翻译
		// 5、可以做分页优化
		PaginationModel result = sqlToyLazyDao.findEntity(StaffInfoVO.class, new PaginationModel(),
				// 支持三种方式指定字段:
			    //1、用一个字符串写多个字段
				// EntityQuery.create().select("staffId,staffCode, staffName, organId, sexType")、
			    //2、按数组形式提供字段
				// EntityQuery.create().select("staffId", "staffCode", "staffName", "organId","sexType")
				//3、采用链式模式提供字段(推荐模式)
				EntityQuery.create().select(StaffInfoVO.select().staffId().staffCode().staffName().organId().sexType())
						// 支持动态条件
						.where("STATUS=1 #[and STAFF_NAME like :staffName]").orderByDesc("entryDate")
						.values(new StaffInfoVO().setStaffName("陈")).filters(new ParamsFilter("staffName").rlike())
						// 支持缓存翻译
						.translates(new Translate("organIdName").setKeyColumn("organId").setColumn("organName"))
						// 支持分页优化
						.pageOptimize(new PageOptimize().aliveSeconds(120)));

快速了解 sqltoy-orm:

简要举例介绍(因篇幅问题部分举例):

 @Autowired
 private SqlToyCRUDService sqlToyCRUDService; //基于对象保存 
 sqlToyCRUDService.save(staffInfo); //基于对象更新(字段值为null的不会参与变更) 
 sqlToyCRUDService.update(staffInfo);  //深度变更,全部字段都参与变更
 sqlToyCRUDService.updateDeeply(staffInfo);  //基于对象更新(制定强制修改的字段) 
 sqlToyCRUDService.update(staffInfo,new String[]{"staffName","onDuty"});
 //基于对象更新 
 sqlToyCRUDService.saveOrUpdate(staffInfo); //加载对象
 sqlToyCRUDService.load(new StaffInfoVO("S190715009"));
 //加锁获取对象
 sqlToyCRUDService.load(new StaffInfoVO("S190715009"),LockMode.UPGRADE);
 //判断对象是否唯一
 sqlToyCRUDService.isUnique(staffInfo, "staffCode");
 //deletedeleteAllupdateAllloadAll 等等不一一写完
//单表对象查询,直接传参模式
List staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class,				EntityQuery.create().where("#[staffName like ?] #[ and status=?]").values("陈", 1).lock(LockMode.UPGRADE)
						.orderBy("staffName").orderByDesc("createTime"));
//单表查询,对象传参模式List staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class,				EntityQuery.create().where("#[staffName like :staffName] #[ and status=:status]")
						.values(new StaffInfoVO().setStatus(1).setEmail("test3@aliyun.com")));
//代码中链式查询并删除Long deleteCount = sqlToyLazyDao.deleteByQuery(StaffInfoVO.class,				EntityQuery.create().where("status=:status").values(new StaffInfoVO().setStatus(1)));
//链式变更Long updateCount = sqlToyLazyDao.updateByQuery(StaffInfoVO.class,				EntityUpdate.create().set("staffName", "张三").where("staffName like ? and status=?").values("陈", 1));
//sqltoy统一的规则就是直接传递sql语句或者对应的sqlId,并不是说sql只能写在xml中(推荐但不绝对)
findBySql(final String sqlOrSqlId, final String[] paramsNamed, final Object[] paramsValue,			final Class voClass)//嫌弃上面的格式化传参也可以使用这样链式查询
sqlToyLazyDao.findByQuery(new QueryExecutor("sqltoy_order_search").names("orderId", "authedOrganIds")
				.values(null, authedOrgans).resultType(DeviceOrderInfoVO.class));
// 使用并行查询同时执行2个sql,条件参数是2个查询的合集
String[] paramNames = new String[] { "userId", "defaultRoles", "deployId", "authObjType" };
Object[] paramValues = new Object[] { userId, defaultRoles, DEPLOY_ID, GROUP };
List> list = 
super.parallQuery(		
    Arrays.asList(
        ParallQuery.create().sql("webframe_searchAllModuleMenus").resultType(TreeModel.class),
				ParallQuery.create().sql("webframe_searchAllUserReports").resultType(TreeModel.class)
    ),
		paramNames, paramValues);
//1、 条件值处理跟具体sql分离
//2、 将条件值前置通过filters 定义的通用方法加工规整(大多数是不需要额外处理的)


   
   

=:beginDate]
		  #[and t.TRANS_DATE<:endDate]    
	]]>

我们对比一下mybatis的实现(同样功能mybatis的多复杂!)

远超mybatis的sqltoy-orm-4.15.3 发版

远超mybatis的sqltoy-orm-4.15.3 发版

远超mybatis的sqltoy-orm-4.15.3 发版

展开阅读全文

页面更新:2024-04-02

标签:链式   字段   缓存   极致   框架   对象   条件   名称   模式   代码   操作   功能   业务   方法   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top