# FastORM_Java
**Repository Path**: code2roc/FastORM_Java
## Basic Information
- **Project Name**: FastORM_Java
- **Description**: 基于jdbctemplate封装轻量级ORM操作框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 3
- **Created**: 2019-01-04
- **Last Updated**: 2025-08-01
## Categories & Tags
**Categories**: database-dev
**Tags**: None
## README
### 基于jdbctemplate和transitiontemplate封装的适用于springboot的轻量级orm框架(mysql数据库)
博客介绍:https://blog.csdn.net/u013407099/article/details/86551895
maven引用:
```
com.gitee.grassprogramming
fastorm
0.0.2
```
**使用示例:**
**声明实体类**
```
@TableName(value = "Frame_Config")
public class Frame_Config extends BaseEntity{
@Key
public String ConfigGuid;
public String ConfigName;
public String ConfigValue;
public String ConfiIntro;
public Date AddDate;
public String ConfigGroupGuid;
@Ignore
public String ExstraStaus;
public String getConfigGuid() {
return ConfigGuid;
}
public void setConfigGuid(String configGuid) {
ConfigGuid = configGuid;
}
public String getConfigName() {
return ConfigName;
}
public void setConfigName(String configName) {
ConfigName = configName;
}
public String getConfigValue() {
return ConfigValue;
}
public void setConfigValue(String configValue) {
ConfigValue = configValue;
}
public String getConfiIntro() {
return ConfiIntro;
}
public void setConfiIntro(String confiIntro) {
ConfiIntro = confiIntro;
}
public Date getAddDate() {
return AddDate;
}
public void setAddDate(Date addDate) {
AddDate = addDate;
}
public String getConfigGroupGuid() {
return ConfigGroupGuid;
}
public void setConfigGroupGuid(String configGroupGuid) {
ConfigGroupGuid = configGroupGuid;
}
public String getExstraStaus() {
return ExstraStaus;
}
public void setExstraStaus(String exstraStaus) {
ExstraStaus = exstraStaus;
}
}
```
注:
1.TableName注解中的值就是表名,如果实体类没有TablName注解,默认类名为表名
2.Key注解表明实体类的主键,数据库映射实体必须包含主键
3.Ignore注解表明实体类中不需要映射的字段,例如程序中使用的额外状态位等
**初始化缓存**
```
DBUtil.init(TestORM.class);
```
注:fastorm会调用init方法将扫描继承自BaseEntity(数据库实体映射类),BaseExtendEntity(与数据库实体类有交集的类,如dto等)这两个类的子类,进行内存缓存,优化反射效率,该方法请在应用启动时调用,例如:
```
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception{
SpringApplication.run(Application.class, args);
DBUtil.init(Application.class);
}
}
```
**测试查找单个对象**
```
Frame_Config frame_config = dbUtil.findOne("8c0648f4-c3eb-4447-a0ff-8a63c41ece3b", Frame_Config.class);
```
**测试单个操作指定的库**
```
DriverManagerDataSource source = dbUtil.getDataSource("jdbc:mysql://127.0.0.1:3306/orm?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true","root","11111","com.mysql.jdbc.Driver");
Frame_User frame_user = dbUtil.findOne("3333", Frame_User.class,source);
```
**测试修改**
```
frame_config.ConfigValue="222";
dbUtil.update(frame_config);
```
注:这里的修改是实体类全字段更新
**测试修改,传入dto类型的部分包含实体类的参数对象**
```
Frame_ConfigDto dto = new Frame_ConfigDto();
dto.setConfigGuid("8c0648f4-c3eb-4447-a0ff-8a63c41ece3b");
dto.setConfigName("SystemName");
dto.setConfigValue("12ssaa");
dto.setIndex(110);
dto.setKeyWord("test123");
dbUtil.update(dto,Frame_Config.class);
```
注:实体类扩展类实现更新,扩展类一定要继承自BaseExtendEntity,其中需要包含和数据库实体映射类同名主键字段,会更新扩展类中与实体类中同名字段的值
**测试SQL日志追踪**
```
dbUtil.OpenTrace();;
frame_config = dbUtil.findOne("8c0648f4-c3eb-4447-a0ff-8a63c41ece3b", Frame_Config.class);
System.out.println(frame_config.ConfigName);
dbUtil.CloseTrace();
```
注:支持打开sql跟踪,默认为关闭后,打开后全局sql都会打印在控制台,需要手动关闭
**测试查找列表**
```
List list = dbUtil.findList("*","",null,"",Frame_Config.class);
list = dbUtil.findList("ConfigName","ConfigGuid=?",new Object[]{"8c0648f4-c3eb-4447-a0ff-8a63c41ece3b"},"AddDate desc",Frame_Config.class);
```
**测试分页查找**
```
list = dbUtil.findPage("*","",null,"AddDate desc",1,1,Frame_Config.class);
```
**测试多表联查**
```
List