Darks ORM框架Beta版发布
程序员文章站
2022-03-06 22:24:47
...
Darks ORM框架是多年前开发的一个Java web ORM框架,现在整理更新后发布。Darks ORM框架综合了hibernate及mybatis的特点,同时也加入了很多新元素。它可以像hibernate一样通过简单易用的API接口进行CRUD数据库操作,也可以像mybatis一样通过XML分离进行高效可配的操作;同时它可以混合两种调用方式,简单普遍的操作采用API,复杂的操作采用XML映射,集各家之所长。并且它可以在XML映射时通过python/JAVA/Javascript进行面向切面的动态处理。
开源地址:https://github.com/liulhdarks/darks-orm
发布地址:https://github.com/liulhdarks/darks-orm/releases
Feature
- 支持通过session直接调用CRUD API方法(对象映射方法以及JDBC方法)。
- 采用注解方式配置数据模型实体。
- 支持链式数据源。如果主数据源出现异常,会启用子节点数据源,以此类推。
- 支持一对一、一对多、多对一注解方式的关联查询。
- 支持在实体模型类方法上配置query注解。可直接调用实体方法进行相关查询。
- 框架全部采用懒加载机制。
- 支持单对象查询、分页查询、集合查询、级联查询。
- 默认集成BoneCP数据连接池框架。
- 支持Spring集成配置。配置简单易用。
- 支持XML映射的SQL mapper。支持DML及DDL配置。
- SQL mapper支持if/elseif/else/foreach/where/set/trim标签的相互嵌套。
- 支持Python/Javascript/Java脚本对SQL mapper进行面向切面的开发。
- 默认集成Ehcache缓存框架。
API调用
List users = session.queryList(User.class, "select * from users where name = ?", "darks"); Page page = session.queryPageList(User.class, "select * from users", page, pageSize); session.save(new User(....)); session.update(user); session.delete(User.class, userId); session.delete(user); session.executeQuery(....);
SQL Mapper调用
<tag id="fieldsUser"> id,name,pwd,depart_id </tag> <Query id="queryUsersComplex" queryType="list" resultType="monitor"> select <include refid="fieldsUser"/> from users <where> <if test ="user.type != null"> <if test="user.type == 1"> type=#user.type </if> <elseif test="user.type == 2"> type=#user.type </elseif> <else> type=#user.type </else> </if> </where> limit 10 </Query> <Update id="updateUserEntity"> update users <set> <if test="user.name != null"> name = #user.name, </if> <if test="user.pwd != null"> pwd = #user.pwd, </if> <if test="#1.type > 0"> type = #user.type, </if> </set> where id=#user.id </Update>
脚本切面开发
<Query id="queryUsersComplex" queryType="list" resultType="monitor"> select <include refid="fieldsUser"/> from users <where> <if test ="user.type != null"> <if test="user.type == 1"> type=#user.type </if> <elseif test="user.type == 2"> type=#user.type </elseif> <else> type=#user.type </else> </if> </where> limit 10 <aspect> <jython className="TestAspect"> class TestAspect(IAspect): def before(self): print __DATA.sql for _user in __DATA.methodParams: print _user __DATA.sql = "select * from users limit 5" return 1 </jython> </aspect> </Query>
上一篇: 代码不是写完了就over了
下一篇: Ebean ORM 2.0.0 发布
推荐阅读
-
电脑版旗鱼浏览器1.0 Beta2 公测版发布 内附下载
-
电脑版旗鱼浏览器1.0 Beta2 公测版发布 内附下载
-
苹果发布Mac OS X 10.11公测版Beta2 提升系统性能和用户体验
-
苹果发布iOS 13 Beta 6公测版:普通用户可升级
-
160WiFi手机版Beta发布WiFi新玩法 用手机遥控您的电脑
-
苹果发布OS X 10.11.1开发者预览版Beta1(15B17c):也能竖中指
-
Android Q Beta 6发布:转正前最后一版测试、继续优化手势
-
苹果发布Mac OS X 10.11 El Capitan开发者预览版Beta5
-
Mac版迅雷3.0.1 Beta版本发布:界面变样等众多更新
-
华为发布鸿蒙OS 2.0手机开发者Beta版:P40、Mate 30系列可申请公测