{"repo":"simonalong/Neo","free":true,"listed":false,"github":"https://github.com/simonalong/Neo","clone":"git clone https://github.com/simonalong/Neo.git","description":"Orm框架：基于ActiveRecord思想开发的至简化的java的Orm框架","language":"Java","stars":40,"topics":["orm-framework","orm","mybatis","jdbc","hikaricp","activerecord"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Neo：Orm框架 Neo是一个基于JDBC开发的至简化框架，采用ActiveRecord的思想进行设计，名字源于《黑客帝国》男主角名字，为连接虚拟与现实的救世主，取名Neo寓意为链接数据和逻辑。源头来自于之前接触的一些不错的Orm框架，也有来自于业内的对于至简化编码影响，也有对于CQRS思想的借鉴。 使用文档 Neo文档介绍 最新Neo文档介绍 快速入门 该框架秉承大道至简理念，采用一个Neo对象对应一个DataSource方式，然后这个Neo对象拥有对表的各种操作。 maven引入 当前已经发布到maven中央仓库，直接使用即可，目前最低版本0.3.0，不同版本的api差距不小，建议使用最新版本。目前版本还未脱离实验阶段，还未到达稳定版，如果有什么问题请及时反馈 快速入门 一个DB对应的一个对象Neo，操作表，则填入对应的表名即可 示例： 指定表的话，就更简单，一个表对应一个对象NeoTable 其中批量更新部分，我们采用最新的方式可以在数据量巨大时候，性能非常好，如下 表示更新表 table name ，其中条件为 id ，对应修改的值为 name 指定实体 上面我们对数据的操作全都是基于map，下面我们基于实体DO对数据库进行操作 复杂查询 除了基本的查询外，对于复杂的条件查询，可以采用稍微复杂点的搜索方式，不过使用也还是很简单 version = 0.6.0 除了默认的and，类SearchQuery还有更复杂的使用方式，类 Neo 支持SearchQuery作为更复杂的条件搜索 // 也可以使用简化后的用法 提示 SearchQuery也可以用来生成sql进行拼接使用，这个时候使用就需要做另外的方式进行处理，举个真实案例如下 注意 生成一个Neo对象除了可以通过url、user和password，还可以通过DataSource方式 实体和DB字段映射 实体和DB中字段的映射，可以有三种方式进行配置 1. NeoMap 全局配置： NeoMap.setDefaultNamingChg(xxx) 2. NeoMap 实体单独配置： neoMap.setNamingChg(xxx) 3.通过注解 @Column 对应配置：每个属性上面添加 @Column 其中是DB中的属性名 下面介绍 @Column 的用法，以后表字段修改时候，实体就不用修改，如果有属性上面没有添加注解，则默认按照类型 NamingChg.UNDERLINE 进行转换 sql字段 业务使用 也可以继承使用，针对业务接入，可以直接继承类 AbstractBizService 即可具备一个表的常见的所有功能，只需要实现如下两个方法即可 实体代码生成器 本框架也支持实体生成器，如下，即可生成如上所示的类 NeoTable1DO 就是如下生成的 多表join 分布式ID生成器 我们这里也提供了分布式ID生成器方案，采用的是改进版雪花算法，彻底解决了雪花算法存在的常见问题（时间回拨问题，workerId回收问题），对于如何解决的，具体方案可见文档，也可见我的另外一个项目Butterfly（Neo框架中的发号器方案是Butterfly中的一个使用选项）。 采用的是改进版雪花算法，不仅没有时间回拨问题，性能还比雪花算法还要高十几倍，普通机器QPS都可以达到1000w/s。 使用 先建表，如果没有请创建 主从（有点问题，在改造中） =v0.5.2 主从功能支持（有些问题，后续版本修复中）： - 读写分离：支持多主多从，主库写，从库读取 - 负载均衡（从库轮询选择，主库只使用最后激活的） ","default_branch":null,"files":null,"tree":[],"storefront":"/r/simonalong","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/simonalong/Neo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}