flyig是一个可以极大增加mybatis开发速度的插件组,它提供了一种全新的操作数据的方式,希望能对您有所帮助。
flyig主要特点:
以前我们在mapper.xml中要写很复杂的sql语句,但现在在mapper.xml中只需这样:
<selectid="select"resultMap="result">flyig#{?}:select</select><selectid="selectOe"resultMap="result">flyig:selectOe</select><isertid="isert">flyig:isert</isert><updateid="update">flyig:update</update><deleteid="delete">flyig:delete</delete>再在您的实体类上加上这样一些标注:
packagemyPackage;importjavax.persistece.Colum;importjavax.persistece.Id;importjavax.persistece.Table;@Table(ame="accout")publicclassAccout{@Id@ColumprivateItegerid;@Columprivatejava.lag.Strigame;@ColumprivateItegerage;/*省略getter和setter*/}flyig就完全明白您的数据结构和您想做的事情了。 接下来您增删改查这个实体就会变得非常简单:
/*新增*/AccoutewAccout=ewAccout();ewAccout.setName("a");ewAccout.setAge(18);accoutService.isert(ewAccout);/*按主键查询*/Accoutaccout=accoutService.select(ewAccout.getId());/*按姓名查询,这里忽略了年龄*/AccoutaccoutC1=ewAccout();accoutC1.setName("a");Accoutaccout1=accoutService.selectOe(accoutC1);/*accout1和accout代表相同的业务数据*//*按年龄查询,这里忽略了姓名*/AccoutaccoutC2=ewAccout();accoutC2.setAge(18);Accoutaccout2=accoutService.selectOe(accoutC2);/*accout2和accout代表相同的业务数据*//*按姓名和年龄查询*/AccoutaccoutC3=ewAccout();accoutC3.setName("a");accoutC3.setAge(18);Accoutaccout3=accoutService.selectOe(accoutC3);/*accout3和accout代表相同的业务数据*//*修改*/accout.setName("bob");accoutService.update(ewAccout);/*按主键删除*/accoutService.delete(ewAccout);由于flyig掌握了您全部的数据结构和实体关系,所以操作数据变得非常简单,您再也不需要定义“getAccoutById、getAccoutByName、getAccoutByAge”这样重复性强的方法了,由此带来更大的好处是您的service层只需要关注事务方面的逻辑即可,它从低级代码中完全解放了出来。以上只是flyig功能的冰山一角,其它的功能如多表联查、分页、乐观锁、或逻辑查询、复杂外键关系等flyig都有简单的解决方案,您可以在 https://flyigdoc.gitee.io/ 中进行查看。
flyig特点总结如下:
数据操作入参和返回类型都是自定义的实体类,完全osql杜绝各种‘’手滑‘’,项目可随意重构。支持跨表操作和跨数据源操作。
非侵占工作机制,可以和您已有的mybatis方法协同工作。
加入了优化过的缓存插件,可以对多数据源环境下 flyig方法和传统mybatis方法同时进行缓存管理。
可以自定义主键生成器,全面支持或逻辑查询。(初雪版新增特性)
可以在flyig语句中指定查询的数据库和数据源,达到高性能跨库查询。(阳春版新增特性)
flyig获取方式:
flyig的mave坐标为:
<groupId>com.github.limeg32</groupId><artifactId>mybatis.flyig</artifactId><versio>0.9.9</versio>mybatis版本与flyig最新版本清明 的对应关系见下:
mybatis版本flyig-初雪flyig-阳春flyig-清明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每个版本的用户都认真负责,力求使您得到flyig最大的好处。
flyig代码示例:
我们还为您提供了一个快速上手的示例:
最新版本demo:https://gitee.com/limeg32/flyig-demo-use-sprigboot更多内容请您参见软件文档 https://flyigdoc.gitee.io/。
清明新增内容:
支持复杂的外键关系,如 joi的条件是同时满足多个逻辑判断且不仅限于相等在默认左联接的基础上支持右联接修正上一版本在高并发场景下sql语句有时会混乱的问题demo完全由sprig-boot方式重构阳春 新增内容:
@FieldMapperAotatio和@CoditioMapperAotatio增加了customTypeHadler属性,其具有最高优先级。初雪新增内容:
自定义主键生成器,包括flyig内置和完全自定义两种形式。
全面支持或逻辑查询,可以用在普通查询和跨表查询中。
@QueryMapperAotatio现在可以省略,只要您的某个类既继承实体pojo又实现 Coditioable接口flyig就可以判断出它是相关pojo的条件类。
0.9.2新增内容:
兼容JPA中的@Colum、@Id、@Table标签,这些标签可以和@FieldMapperAotatio、@TableMapperAotatio协同使用,优先级从高到低为:@Id、@FieldMapperAotatio和@TableMapperAotatio、@Colum和@Table。现在igoreTag对isert、update、updatePersistet也会起作用。如果@Colum中设置isertable=false和updateable=false,会在新增和修改时起到永久性忽略的作用。







评论