# orm-core
**Repository Path**: nogeek-cn/orm-core
## Basic Information
- **Project Name**: orm-core
- **Description**: orm-core 简单的 orm 映射关系
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-24
- **Last Updated**: 2021-04-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ORM_core
## 简介
- 简单的 orm 映射关系
- 理论上最快,最核心,不与任何数据库强绑定,只强调映射关系,可以与任何数据库GAV进行集成
- 缺点:绑定了 Spring
- github:
- github_rep
- gitee:
- gitee_rep
## 设计初衷
- [Why](/Why.md)
## 为什么要用这款框架
1. 支持标准 jsr220 `persistence-api` 的注解。
2. 没有学习成本:只需要 引入 `@TableInfo` 注解就可以实现映射。
3. 支持扩展,字段名与数据库名字对应关系可以自定义。是否初始化。
4. **支持 Function 编程,`Function` 与 `fieldName` 也进行了缓存。** 例如:`#getUserName` 与 `userName` 的对应关系。
5. **快,无任何反射运行时的消耗!!!**
6. 不想引入其他的依赖,又不想使用便捷的 API,(你引入 spring-data-jpa ,就立马绑定上了,而且还没有 Function 与 column 的对应关系)
7. 高扩展性,可以自定义实现 `fieldName` 与 `columnName` 对应关系,比如,你们的表明开头都有 "xxx_" 这种,也很容易做到。
## Feature
- 基于 Spring xml 的扩展解析,还没做,只是做了注解的。。。。。。
### Tips
- 这里边大量代码来自于 `Dubbo` ,模仿着写了一边。工具类不需要测试了,反正 `Dubbo` 都测试过了。
- JAVA字段名与数据库字段名 copy from `spring data jpa` 。
- `Lambda` 与字段名对应关系来自于 `mybatis-plus` 。
## 例子
引入:
- 还不会往中心仓库发 :cry: :cry: :cry: :cry:
```xml
top.darian
orm-core-spring
```
### Java使用
#### 注解方式
```java
@SpringBootApplication
@EnableTableInfo
public class OrmCoreExampleApplication {
public static void main(String[] args) {
SpringApplication.run(OrmCoreExampleApplication.class, args);
// user_name
System.out.println(
BeanToDataBaseUtils.getColumnByFunctionName(
TestModule::getUserName,
TestModule.class));
// user_name
System.out.println(
BeanToDataBaseUtils.getColumnBySBiConsumerName(
TestModule::setUserName,
TestModule.class));
// test_module
System.out.printf(BeanToDataBaseUtils.getTableNameByClazz(TestModule.class));
}
}
@TableInfo
@Data
class TestModule {
private String userName;
}
```
#### xml 方式
```xml
```
### 自定义扩展
```properties
# 系统启动的时候是否把 对应关系 初始化
#orm.core.earlyInitialization=true
orm.core.earlyInitialization=false
# 全局 fieldName 和 column 对应关系 默认策略: top.darian.orm.core.spring.util.module.mapping.SnakeCaseFieldNamingStrategy
orm.core.fieldNamingStrategy=classFullName
# 全局 entity.classSimpleName 和 tableName 对应关系 默认策略: top.darian.orm.core.spring.util.module.mapping.SnakeCaseFieldNamingStrategy
orm.core.tableNamingStrategy=classFullName
```
### 版本迭代
- 1.0.0
- 基本功能
- functionColumnMap -> functionFieldMap 命名歧义
- 2021-04-30
- 增加 xml 方式
### 价值
- 学习成本低,只需要到 JPA 就行了,又不与 JPA 冲突,
- `@javax.persistence.Table` `@javax.persistence.Column` 两个注解,就可以实现,不加就使用默认实现
可以和其它框架集成。比如,要做,mysql 映射,es 映射,等等,都可以做,而且只有一个 Spring Bean,可以实现多种 映射关系的封装。