オリジナルリンク:IBIT-紹介MyBatisの
アウトライン
IBIT-MyBatisのはMyBatisの強化ツールである、開発効率を向上させ、開発プロセスを簡素化を目的としたMyBatisのに基づき、新機能や機能を追加します。
プロパティ
- 非侵襲的、導入された「IBIT-MyBatisのは、」既存のプロジェクトには影響を与えません。
- ダオ、マッパー、一般的に使用される単一テーブルのサポートCRUD操作、そしてより強力なSQLビルダー(組み込み柔軟なCRUD(検索、削除、変更を加える)の操作、SQL-Builderを、より複雑な操作(例えば、集計機能を満たすために)、パケット、でも表)。
- 内蔵符号発生器(IBIT-MyBatisの発電機)、データベース・テーブルを指定し、自動生成ダオ、マッパー、エンティティ、プロパティ、および他の基本的なタイプ、または複製を低減するためにコーディング類似。
- 延長サポート、ページング、データ脱感作
- 主流のマイクロサービスフレームワークspringboot(IBIT-MyBatisの-springboot-スターター)サポート
全体のフレームワークマップ
説明SQLビルダー
sql-builder
CRUD操作を実現するために、単一のテーブルに対して定義された動的SQLの生成規則。
ブロック図
動的SQLの作成規則
いいえ。 | 方法 | 説明 |
---|---|---|
1 | SELECT selectPo(オブジェクト) DISTINCT SELECT selectDistinctPoを(オブジェクト) |
select [distinct] 声明 |
2 | カウント COUNTDISTINCTを |
select count [distinct] 声明 |
3 | deleteFrom deleteTableFrom(别名) |
delete from 声明 |
4 | 更新 | update 声明 |
5 | INSERTINTO batchInsertInto(バッチ) |
insert into 声明 |
6 | set increaseSet(列自增) decreaseSet(列自减) |
set 语句 |
7 | values | values 语句 |
8 | from | from 语句 |
9 | joinOn leftJoinOn rightJoinOn fullJoinOn innerJoinOn complexLeftJoinOn complexRightJoinOn complexFullJoinOn complexInnerJoinOn |
[left|right|full|inner] join on 语句 |
10 | where andWhere orWhere |
where 语句 |
11 | groupBy | group by 语句 |
12 | having andHaving orHaving |
having 语句 |
13 | orderBy | order by 语句 |
14 | limit | limit 语句 |
更加详细用法参考sql-builder。
核心代码说明
ibit-mybatis重新定义了业务分层模型,将原有的Dao层下放到Mapper(数据访问层),增加新的Dao层(构造层)。
分层模型
定义Mapper
Mapper为数据访问层,默认基于注解实现了insert(增加),update(更新/删除),select(查询),count(计数)和实体映射到xml的ResultMap。接收参数为sql-builder
生成的SqlParams参数。Mapper对于原生的基于xml、注解的数据访问方式是兼容的。
定义Dao
Dao为构造层,可以通过sql-builder
构造sql,调用Mapper获取结果。定义通用的Dao模板,默认支持跟主键相关的CRUD操作。
Dao模板设计,按照主键个数分类,分成3类,无主键、单个主键、多个主键。
- NoIdDao:无主键Dao,只支持插入操作。
- SingleIdDao:单个主键Dao,支持插入,通过主键查询、更新删除操作。
- MultipleIdDao:多个主键Dao,支持插入,通过主键查询、更新删除操作。
用法
相关引用
Gradle
compile 'tech.ibit:ibit-mybatis:${lastest}'
Maven
<dependency>
<groupId>tech.ibit</groupId>
<artifactId>ibit-mybatis</artifactId>
<version>${latest}</version>
</dependency>
说明: 将 "${latest}" 替换成对应的版本
其他说明
如果需要需要在Mapper中动态指定"resultMap",则需要增加拦截器tech.ibit.mybatis.plugin.ResultMapInterceptor
@Bean
public ResultMapInterceptor getResultMapInterceptor() {
return new ResultMapInterceptor();
}