sqltoy-orm 4.13.7 发版

开源地址:

更新内容

1、修复在代码中动态设置缓存翻译的bug,通过quickstart项目中演示用法,参见StaffInfoDao

public PaginationModel findStaff(PaginationModel pageModel, StaffInfoVO staffInfoVO) {
    // sql可以直接在代码中编写,复杂sql建议在xml中定义
    // 单表entity查询场景下sql字段可以写成java类的属性名称
    // 单表查询一般适用于接口内部查询,面向页面很少存在单表查询(除非做ETL归集)
    String sql = "#[staffName like :staffName]#[and createTime>=:beginDate]#[and createTime<=:endDate]";
    return findEntity(StaffInfoVO.class, pageModel, EntityQuery.create().where(sql).values(staffInfoVO)
            // 字典缓存必须要设置cacheType
            // 需设置keyColumn构成select keyColumn as column模式
            .translates(new Translate("dictKeyName").setColumn("sexTypeName").setCacheType("SEX_TYPE")
                    .setKeyColumn("sexType"))
            .translates(new Translate("organIdName").setColumn("organName").setKeyColumn("organId")));
}

2、规范了FileUtil工具类,为单元测试时提供一些必要的辅助工具3、对update(Entity) 和update(Entity,String[] forceUpdateProps) 等类似方法用update(Entity,String...forceUpdateProps)进行了合并,减少部分代码冗余

4、重新构建了sqltoy-quickstart演示项目,参见sagacity-sqltoy/trunk/sqltoy-quickstart


快速了解 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 等等不一一写完
sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

//单表对象查询,直接传参模式
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-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

//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));
sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

我们对比一下mybatis的实现(很简单的sql写的如此让人不愿意写!)

sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

sqltoy-orm 4.13.7 发版

展开阅读全文

页面更新:2024-03-15

标签:链式   字段   缓存   极致   演示   框架   逻辑   对象   模式   代码   操作   业务   方法   项目   数据   科技

1 2 3 4 5

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

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

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

Top