登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
数据库相关
>
数据库开发包
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
254
Star
3K
Fork
592
MyBatis-Flex
/
MyBatis-Flex
代码
Issues
262
Pull Requests
9
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
506
重新适配 mybatis-flex-solon-plugin
已合并
SolonLab:main
MyBatis-Flex:main
西东
创建于 2024-12-03 14:54
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
重新适配 mybatis-flex-solon-plugin: 1. 不再依赖 mybatis-solon-plugin; 2. 不再有 `@Db` 注解; 3. 何持与 springboot 相同的配置名; 4. 统一使用 `@UseDataSource` 和 `DataSourceKey` 切换数据源。 5. 支持 mf 动态数据源的事务 6. solon 升为 3.0.1 兼容 2.8.x 总体上保持与 springboot 差不多的体验风格。原则上强调 mf 的使用本色。 --- 升级后的兼容说明: * 数据源配置不用变 * 原 mybatis.xxx 的配置风格,合为一个 `mybatis-felx`;配置属性可不变(已做兼容处理),或变成新的风格 * 原 `@Db(xxx)` 的注入风格,改为 `@Inject`;多数据源时,采用 mf 的数据源切换风格 --- 新的使用说明: ```xml <dependency> <groupId>com.mybatis-flex</groupId> <artifactId>mybatis-flex-solon-plugin</artifactId> </dependency> ``` #### 1、描述 数据扩展插件,为 Solon Data 提供基于 mybatis-flex([代码仓库](https://gitee.com/mybatis-flex/mybatis-flex))的框架适配,以提供ORM支持。 可注入类型: | 支持类型 | 说明 | | -------- |----------------------------------------------------------------------| | Mapper.class | 注入 Mapper。例:`@Inject UserMapper userMapper` | | FlexConfiguration | 注入 FlexConfiguration,一般仅用于配置。例:`@Inject FlexConfiguration db1Cfg` | | FlexGlobalConfig | 注入 FlexGlobalConfig,一般仅用于配置。例:`@Inject FlexGlobalConfig db1Gc` | | SqlSessionFactory | 注入 SqlSessionFactory。例:`@Inject SqlSessionFactory db1` (不推荐直接使用) | | RowMapperInvoker | 注入 RowMapperInvoker。例:`@Inject RowMapperInvoker rowMapper` | #### 3、数据源配置 ```yml # 配置数据源(或者使用 solon.dataSources 配置数据源,效果一样) mybatis-flex.datasource: db1: jdbcUrl: jdbc:mysql://localhost:3306/rock?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true driverClassName: com.mysql.cj.jdbc.Driver username: root password: 123456 # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) mybatis-flex: type-aliases-package: #支持包名 或 类名(大写开头 或 *)//支持 ** 或 * 占位符 - "demo4021.model" - "demo4021.model.*" #这个表达式同上效果 type-handlers-package: #支持包名 或 类名(大写开头 或 *)//支持 ** 或 * 占位符 - "demo4021.dso.mybaits.handler" - "demo4021.dso.mybaits.handler.*" #这个表达式同上效果 mapper-locations: #支持包名 或 类名(大写开头 或 *)或 xml(.xml结尾)//支持 ** 或 * 占位符 - "demo4021.**.mapper" - "demo4021.**.mapper.*" #这个表达式同上效果 - "classpath:demo4035/**/mapper.xml" - "classpath:demo4035/**/mapping/*.xml" configuration: #扩展配置(要与 FlexConfiguration 类的属性一一对应) cacheEnabled: false mapUnderscoreToCamelCase: true global-config: #全局配置(要与 FlexGlobalConfig 类的属性一一对应)//只是示例,别照抄 printBanner: false keyConfig: keyType: "Generator" value: "snowFlakeId" # #提示:使用 "**" 表达式时,范围要尽量小。不要用 "org.**"、"com.**" 之类的开头,范围太大了,会影响启动速度。 # ``` 主要支持的属性说明: | 支持属性 | 别名(保持与之前的兼容) | 说明 | |-------------------------|----------------------------|----------------------------------| | type-aliases-package | typeAliases | 类型别名 | | type-aliases-super-type | typeAliasesSuperType | 类型别名的父类(用于过滤) | | type-handlers-package | typeHandlers | 类型处理器 | | mapper-locations | mappers | mapper 类或xml文件 | | configuration | configuration | mybatis 配置。对应类:FlexConfiguration | | global-config | globalConfig | 全局部置。对应类:FlexGlobalConfig | ##### Mapper 配置注意事项: * 通过 mapper 类包名配置。 xml 与 mapper 需同包同名 ```yml mybatis-flex.mapper-locations: "demo4035.dso.mapper" ``` * 通过 xml 目录进行配置。xml 可以固定在一个资源目录下 ```yml mybatis-flex.mapper-locations: "classpath:mybatis/db1/*.xml" ``` #### 4、代码应用 ```java //配置 mf (如果配置不能满足需求,可以进一步代助代码) @Configuration public class Config { @Bean public void ormConfig(@Inject FlexConfiguration cfg, @Inject FlexGlobalConfig globalConfig) { cfg.setCacheEnabled(false); } } //应用 @Component public class AppService { @Inject AppMapper appMapper; //xml sql mapper @Inject BaseMapper<App> appBaseMapper; //base mapper public void test0() { App app1 = appMapper.getAppById(12); App app2 = appBaseMapper.selectOneById(12); } @UseDataSource("db1") public void test1() { App app1 = appMapper.getAppById(12); App app2 = appBaseMapper.selectOneById(12); } public void test2() { try { DataSourceKey.use("db1"); App app1 = appMapper.getAppById(12); App app2 = appBaseMapper.selectOneById(12); } finally { DataSourceKey.clear(); } } } ```
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
Michael Yang
已审查通过
已完成
(1/1人)
测试
Michael Yang
已测试通过
已完成
(1/1人)
怎样手动合并此 Pull Request
git checkout main
git pull https://gitee.com/solonlab/mybatis-flex.git main
git push origin main
评论
0
提交
3
文件
13
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
Michael Yang
fuhai
王帅
Suomm
未设置
最少人数
1
测试
Michael Yang
fuhai
王帅
Suomm
未设置
最少人数
1
优先级
不指定
严重
主要
次要
不重要
标签
标签管理
未设置
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
参与者
(1)
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册