22
33<div align =" center " ><img style =" display : block ; margin : 0 auto ;" src =" https://blinkfox.github.io/fenix/assets/images/logo.png " alt =" fenix logo " /></div >
44
5- [ ![ Build Status] ( https://secure.travis-ci.org/blinkfox/fenix.svg )] ( https://travis-ci.org/blinkfox/fenix ) [ ![ HitCount] ( http://hits.dwyl.io/blinkfox/fenix.svg )] ( http://hits.dwyl.io/blinkfox/fenix ) [ ![ Javadocs] ( http://www.javadoc.io/badge/com.blinkfox/fenix.svg )] ( http://www.javadoc.io/doc/com.blinkfox/fenix ) [ ![ GitHub license] ( https://img.shields.io/github/license/blinkfox/fenix.svg )] ( https://github.com/blinkfox/fenix/blob/develop/LICENSE ) [ ![ fenix] ( https://img.shields.io/badge/fenix-v2.3.6 -blue )] ( https://search.maven.org/artifact/com.blinkfox/fenix/2.3.6 /jar ) [ ![ fenix starter] ( https://img.shields.io/badge/fenix%20spring%20boot%20starter-v2.3.6 -blue )] ( https://search.maven.org/artifact/com.blinkfox/fenix-spring-boot-starter/2.3.6 /jar ) [ ![ codecov] ( https://codecov.io/gh/blinkfox/fenix/branch/develop/graph/badge.svg )] ( https://codecov.io/gh/blinkfox/fenix )
5+ [ ![ Build Status] ( https://secure.travis-ci.org/blinkfox/fenix.svg )] ( https://travis-ci.org/blinkfox/fenix ) [ ![ HitCount] ( http://hits.dwyl.io/blinkfox/fenix.svg )] ( http://hits.dwyl.io/blinkfox/fenix ) [ ![ Javadocs] ( http://www.javadoc.io/badge/com.blinkfox/fenix.svg )] ( http://www.javadoc.io/doc/com.blinkfox/fenix ) [ ![ GitHub license] ( https://img.shields.io/github/license/blinkfox/fenix.svg )] ( https://github.com/blinkfox/fenix/blob/develop/LICENSE ) [ ![ fenix] ( https://img.shields.io/badge/fenix-v2.4.0 -blue )] ( https://search.maven.org/artifact/com.blinkfox/fenix/2.4.0 /jar ) [ ![ fenix starter] ( https://img.shields.io/badge/fenix%20spring%20boot%20starter-v2.4.0 -blue )] ( https://search.maven.org/artifact/com.blinkfox/fenix-spring-boot-starter/2.4.0 /jar ) [ ![ codecov] ( https://codecov.io/gh/blinkfox/fenix/branch/develop/graph/badge.svg )] ( https://codecov.io/gh/blinkfox/fenix )
66
77> [ Fenix] ( https://github.com/blinkfox/fenix ) (菲尼克斯)是一个为了解决复杂动态 SQL (` JPQL ` ) 而生的 ` Spring Data JPA ` 扩展库,目的是辅助开发者更方便快捷的书写复杂、动态且易于维护的 SQL,支持 ` XML ` 、Java 链式 ` API ` 和动态条件注解等四种方式来书写动态 SQL。
88
99[ 📖 使用文档] ( https://blinkfox.github.io/fenix ) | [ 🍉 示例项目 (fenix-example)] ( https://github.com/blinkfox/fenix-example )
1010
11- ## 💎 特性
11+ ## 💎 一、 特性
1212
1313- 简单、轻量级、无副作用的集成和使用,jar 包仅 ` 177 KB ` ;
1414- 作为 JPA 的扩展和增强,兼容 Spring Data JPA 原有功能和各种特性;
1515- 提供了 ` XML ` 、Java 链式 ` API ` 和动态条件注解等四种方式来书写动态 SQL;
1616- ` XML ` 的方式功能强大,让 SQL 和 Java 代码解耦,易于维护;
1717- 可以采用 Java 链式 ` API ` 来书写动态 SQL;
1818- 可以采用动态条件注解和Java 链式 ` API ` 来书写出动态的 ` Specification ` 。
19+ - 增强了更快速高效的 JPA 批量“增删改”的支持,支持非 ` null ` 属性的增量更新;
20+ - 支持** 雪花算法** 的主键 ID 生成策略;
1921- 具有动态性、极致的可复用性的优点;
2022- SQL 执行结果可返回任意自定义的实体对象,比使用 JPA 自身的投影方式更加简单和自然;
2123- 具有可扩展性,如:可自定义 ` XML ` 语义标签和对应的标签处理器来生成自定义逻辑的 SQL 片段和参数;
2224
23- ## ✔️ 支持场景
25+ ## 🏖️️ 二、 支持场景
2426
2527适用于 Java ` Spring Data JPA ` 项目,` JDK 1.8 ` 及以上,Spring Data JPA 的版本须保证 ` 2.1.8.RELEASE ` 及以上;如果你是 Spring Boot 项目,则 Spring Boot 的版本须保证 ` 2.1.5.RELEASE ` 及以上。因为后续版本的 Spring Data JPA 对其中 ` QueryLookupStrategy ` 的代码有较大改动。
2628
27- ## 🌱 Spring Boot 项目集成
29+ ## ☘️ 三、 Spring Boot 项目集成
2830
2931如果你是 Spring Boot 项目,那么直接集成 ` fenix-spring-boot-starter ` 库,并使用 ` @EnableFenix ` 激活 Fenix 的相关配置信息。
3032
3133如果你** 不是 Spring Boot 项目** ,请参看[ 这里] ( https://blinkfox.github.io/fenix/#/quick-install?id=not-spring-boot-project ) 的配置方式。
3234
3335> ** 注** :请确保你使用的 Spring Boot 版本是 ** ` v2.1.5.RELEASE ` 及以上** ,如果 Spring Boot 版本是 ` v2.2.x.RELEASE ` 及以上,则 Fenix 版本必须是 ` v2.0.0 ` 版本及以上。
3436
35- ### Maven
37+ ### 🌾 1. Maven
3638
3739``` xml
3840<dependency >
3941 <groupId >com.blinkfox</groupId >
4042 <artifactId >fenix-spring-boot-starter</artifactId >
41- <version >2.3.6 </version >
43+ <version >2.4.0 </version >
4244</dependency >
4345```
4446
45- ### Gradle
47+ ### 🌵 2. Gradle
4648
4749``` bash
48- compile ' com.blinkfox:fenix-spring-boot-starter:2.3.6 '
50+ compile ' com.blinkfox:fenix-spring-boot-starter:2.4.0 '
4951```
5052
51- ### 激活 Fenix (@EnableFenix )
53+ ### 🏕️ 3. 激活 Fenix (@EnableFenix )
5254
5355然后需要在你的 Spring Boot 应用中使用 ` @EnableFenix ` 激活 Fenix 的相关配置信息。
5456
@@ -68,11 +70,11 @@ public class DemoApplication {
6870}
6971```
7072
71- > ** 注** :
73+ > ** 💡 注** :
7274> 1 . ` @EnableFenix ` 注解中实质上是使用的是 ` FenixJpaRepositoryFactoryBean ` 。而 ` FenixJpaRepositoryFactoryBean ` 继承自 Spring Data JPA 默认的 ` JpaRepositoryFactoryBean ` 。所以,Fenix 与 JPA 的各种注解和特性完全兼容,并提供了更加强大的 ` @QueryFenix ` 注解和其他更多动态的能力。
7375> 2 . 如果你是多数据源,则你可以根据自身情况,在需要的数据源中的 ` @EnableJpaRepositories ` 注解中单独设置 ` repositoryFactoryBeanClass ` 的值为:` FenixJpaRepositoryFactoryBean.class ` 。示例如:` @EnableJpaRepositories(repositoryFactoryBeanClass = FenixJpaRepositoryFactoryBean.class) ` 。
7476
75- ### application.yml 配置(可选的)
77+ ### 🏝️ 4. application.yml 配置(可选的)
7678
7779> ** 注** :Fenix 采用了** 约定优于配置** 的方式,所以通常情况下,你可以不用做任何的 Fenix 配置。
7880
@@ -99,7 +101,7 @@ fenix:
99101 predicate-handlers :
100102` ` `
101103
102- ## 🍔 示例概览
104+ ## 🍔 四、 示例概览
103105
104106Fenix 中支持四种方式书写动态 SQL,分别是:
105107
@@ -383,10 +385,10 @@ public void queryBlogsWithAnnotaion() {
383385}
384386` ` `
385387
386- # # 📝 开源许可证
388+ # # 📝 五、 开源许可证
387389
388390本 `Fenix` 的 Spring Data JPA 扩展库遵守 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 许可证。
389391
390- # # 🙏 鸣谢
392+ # # 🙏 六、 鸣谢
391393
392394感谢 [JetBrains 公司](https://www.jetbrains.com/?from=fenix) 为本开源项目提供的免费正版 Intellij IDEA 的 License 支持。
0 commit comments