# jfinal-orm-spring-boot-starter **Repository Path**: jfinal/jfinal-orm-spring-boot-starter ## Basic Information - **Project Name**: jfinal-orm-spring-boot-starter - **Description**: JFinal的ORM太好用了,独立引用JFinal的ActiveRecord模块,集成的SpringBoot启动器。可自动配置单数据源、多数据源、集成Sharding-Jdbc可实现分库分表。并使用JTA+Atomikos实现了对多数据源事务的管理。只需要简单配置即可自动完成装配。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 8 - **Created**: 2020-10-24 - **Last Updated**: 2022-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jfinal-orm-spring-boot-starter #### 介绍 - JFinal的SpringBoot启动器,独立引用ActiveRecord模块。 - 支持多数据源、分库分表、多数据源事务管理。 - 只需要简单配置即可自动完成装配。 - 使用SpringBoot的时候,感觉没有很顺手的ORM。 - 支持JFinal,为JFinal生态尽绵薄之力。 - 行业清退导致的失业,又赶上特殊时期导致的待业,让人可以心境复杂的宅。 #### 功能说明 - 单数据源 - 多数据源 - 多数据源XA事务 - 分库分表 #### 技术选型 - JFinal ActiveRecord - SpringBoot - Sharding-Jdbc(可选) - JTA+Atomikos(可选) #### 模块说明 - core : 自动配置核心包 - example : demo - example->single-datasource : 单数据源 - example->multi-datasource :多数据源 - example->multi-datasource-xa : 多数据源+XA事务支持 - example->sharding-multi-datasource-xa : sharding-jdbc分库分表+XA事务 - example->model-gener : Model的生成工具 #### 配置说明 #### - 配置文件 | 参数 | 说明 | 例子 | | ----------------------------- | -------------------------------------------------------- | --------------------------------- | | jfinal.orm.model-scan-package | 需要扫描Model的包路径,多个包用英文逗号分隔 | blingking.model1,blingking.model2 | | jfinal.orm.is-scan-child | 是否扫描子包 | 默认false | | jfinal.orm.datasource-enable | 是否使用JFinal ORM来自动配置数据源。开启的话设置为:true | 默认false | | jfinal.orm.template | 如果当前只有一个数据源,配置template即可。多个数据源请参照使用说明。 | xxx1.sql,xxx2.sql | #### - 注解 #### @JFinalTable(表示当前类为数据库映射类) | 参数 | 说明 | 例子 | | ---- | ---- | ---- | | name| 数据库表名 | name = "t_order" | | dataSourceName | 当前Model对应的数据源 | dataSourceName = "ds1" | - 使用在映射类上面 - name的匹配规则为松散匹配:数据库表名,去掉下划线,再转小写和类名转小写相同,则不需要配置。 - 分表后,name按照分表规则配置,如:order1,order2,order3,则name="order"。 - dataSourceName可以不配置。 - 如果name符合匹配规则,则可以不添加此注解 #### @JFinalORMTx(事务注解) | 参数 | 说明 | 例子 | | ---- | ---- | ---- | | txType| 当前方法的事务类型,默认为:txType = TxTypeEnum.NATIVE | txType = TxTypeEnum.XA | | dataSources | 当前操作牵扯的数据源 | dataSources={"ds1","ds2"} | - 使用在需要事务的方法上 - 单个数据源事务管理,可不添加dataSources参数 - 多数据库事务管理 - - 使用NATIVE管理事务(默认) - - - 如果方法内操作的是同一个数据库,则添加当前数据源,如:dataSources="ds1" - - - 如果方法内操作的是不同数数据库,则添加多个数据源 如:dataSources={"ds1","ds2"} - - 使用XA管理事务 - - - 不需要添加dataSources参数 - - - 开启XA,如:txType = TxTypeEnum.XA - - - 添加JTA+Atomikos相关依赖 #### 数据源配置 - 可使用JFinal ORM自动装配数据源到JFinal ORM。只需开启JFinal ORM数据源支持,如:jfinal.orm.datasource-enable。 - 也可以自己编写配置文件,并自行使用Java Config配置数据源,项目启动后,会自动把数据源装配进JFinal ORM。 #### 分库分表 - 使用Sharding Jdbc完成分库分表。 - 编写配置文件即可,项目启动后会自动完成装配。 - 简单demo,可参照example->sharding-multi-datasource-xa - 详细配置文件可参照Sharding Jdbc相关配置。 - 需要添加相关依赖:sharding-jdbc-spring-boot-starter #### 事务支持 - 通过@JFinalORMTx开启事务 - NATIVE - - 默认类型 - - 支持多数据源,但是提交和回滚是循环操作的,不保证可靠性 - - 适合对可靠性要求不高的系统 - XA - - 需要手动开启 - - 支持多数据源,使用JTA+Atomikos实现,可靠性高 - - 需要添加相关依赖:transactions-jdbc和jta #### Enjoy Sql使用 - 如果只有一个数据源直接使用template即可 - - 如:jfinal.orm.template=xxx1.sql,xxx2.sql - 如果多个数据源,则根据数据源名称,独立配置temlpate - - 如:jfinal.orm.templates.ds1=xxx1.sql,xxx2.sql jfinal.orm.templates.ds2=xxx1.sql,xxx2.sql #### 使用步骤 - 使用example->model-gener生成model - 使用core包 - 导入相关依赖