flying MyBatis 的扩展插件开源项目

我要开发同款
匿名用户2017年10月10日
26阅读
开发技术Java
所属分类程序开发、ORM/持久层框架
授权协议Apache

作品详情

flying是一个可以极大增加mybatis开发速度的插件组,它提供了一种全新的操作数据的方式,希望能对您有所帮助。

flying主要特点:

       以前我们在mapper.xml中要写很复杂的sql语句,但现在在mapper.xml中只需这样:

<selectid="select"resultMap="result">flying#{?}:select</select><selectid="selectOne"resultMap="result">flying:selectOne</select><insertid="insert">flying:insert</insert><updateid="update">flying:update</update><deleteid="delete">flying:delete</delete>

        再在您的实体类上加上这样一些标注:

packagemyPackage;importjavax.persistence.Column;importjavax.persistence.Id;importjavax.persistence.Table;@Table(name="account")publicclassAccount{@Id@ColumnprivateIntegerid;@Columnprivatejava.lang.Stringname;@ColumnprivateIntegerage;/*省略getter和setter*/}

      flying就完全明白您的数据结构和您想做的事情了。 接下来您增删改查这个实体就会变得非常简单:

/*新增*/AccountnewAccount=newAccount();newAccount.setName("ann");newAccount.setAge(18);accountService.insert(newAccount);/*按主键查询*/Accountaccount=accountService.select(newAccount.getId());/*按姓名查询,这里忽略了年龄*/AccountaccountC1=newAccount();accountC1.setName("ann");Accountaccount1=accountService.selectOne(accountC1);/*account1和account代表相同的业务数据*//*按年龄查询,这里忽略了姓名*/AccountaccountC2=newAccount();accountC2.setAge(18);Accountaccount2=accountService.selectOne(accountC2);/*account2和account代表相同的业务数据*//*按姓名和年龄查询*/AccountaccountC3=newAccount();accountC3.setName("ann");accountC3.setAge(18);Accountaccount3=accountService.selectOne(accountC3);/*account3和account代表相同的业务数据*//*修改*/account.setName("bob");accountService.update(newAccount);/*按主键删除*/accountService.delete(newAccount);

       由于flying掌握了您全部的数据结构和实体关系,所以操作数据变得非常简单,您再也不需要定义“getAccountById、getAccountByName、getAccountByAge”这样重复性强的方法了,由此带来更大的好处是您的service层只需要关注事务方面的逻辑即可,它从低级代码中完全解放了出来。以上只是flying功能的冰山一角,其它的功能如多表联查、分页、乐观锁、或逻辑查询、复杂外键关系等flying都有简单的解决方案,您可以在 https://flyingdoc.gitee.io/ 中进行查看。

      flying特点总结如下:

数据操作入参和返回类型都是自定义的实体类,完全nosql杜绝各种‘’手滑‘’,项目可随意重构。

支持跨表操作和跨数据源操作。

非侵占工作机制,可以和您已有的mybatis方法协同工作。

加入了优化过的缓存插件,可以对多数据源环境下 flying方法和传统mybatis方法同时进行缓存管理。

可以自定义主键生成器,全面支持或逻辑查询。(初雪版新增特性)

可以在flying语句中指定查询的数据库和数据源,达到高性能跨库查询。(阳春版新增特性)

flying获取方式:

      flying的maven坐标为:

<groupId>com.github.limeng32</groupId><artifactId>mybatis.flying</artifactId><version>0.9.9</version>

        mybatis版本与flying最新版本清明 的对应关系见下:

mybatis版本flying-初雪flying-阳春flying-清明3.3.0、3.3.10.8.3不再支持不再支持3.4.0、3.4.1、3.4.2、3.4.3、3.4.4、3.4.5、3.4.60.9.30.9.40.9.9

      之所以采用分版本发布的方式是因为我们对mybatis每个版本的用户都认真负责,力求使您得到flying最大的好处。

flying代码示例:

       我们还为您提供了一个快速上手的示例:

最新版本demo:https://gitee.com/limeng32/flying-demo-use-springboot

    更多内容请您参见软件文档 https://flyingdoc.gitee.io/。

清明新增内容:

支持复杂的外键关系,如  join的条件是同时满足多个逻辑判断且不仅限于相等在默认左联接的基础上支持右联接修正上一版本在高并发场景下sql语句有时会混乱的问题demo完全由spring-boot方式重构

阳春 新增内容:

@FieldMapperAnnotation和@ConditionMapperAnnotation增加了customTypeHandler属性,其具有最高优先级。

初雪新增内容:

自定义主键生成器,包括flying内置和完全自定义两种形式。

全面支持或逻辑查询,可以用在普通查询和跨表查询中。

@QueryMapperAnnotation现在可以省略,只要您的某个类既继承实体pojo又实现 Conditionable接口flying就可以判断出它是相关pojo的条件类。

0.9.2新增内容:

兼容JPA中的@Column、@Id、@Table标签,这些标签可以和@FieldMapperAnnotation、@TableMapperAnnotation协同使用,优先级从高到低为:@Id、@FieldMapperAnnotation和@TableMapperAnnotation、@Column和@Table。

现在ignoreTag对insert、update、updatePersistent也会起作用。如果@Column中设置insertable=false和updateable=false,会在新增和修改时起到永久性忽略的作用。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论