ibit-mybatis 2.x 介绍

原文链接: ibit-mybatis 2.x 介绍

概述

ibit-mybatis
是一个 Mybatis 的增强工具,在 Mybatis 的基础上增加了新的特性与功能,志在简化开发流程、提高开发效率。

特性

  • 无侵入,引入 ibit-mybatis
    对现有工程不会产生影响。
  • 无 xml 配置,基于注解的方式实现
  • 灵活的CRUD(增、删、改、查)操作,Mapper,支持常用的单表CRUD操作,更有强大的SQL构造器( sql-builder
    ),满足更为复杂的操作(如聚合函数、分组、连表、分页),为了让sql-builder更好的支持 ibit-mybatis,从 ibit-mybatis 2.0 开始,sql-builder 合并到 ibit-mybatis 中。
  • 内置代码生成器( ibit-mybatis-generator
    ),指定数据库表,自动生成Mapper(无主键、单主键和多主键 Mapper)、Entity、Properties等基础类,减少重复或者相似代码编写。
  • 扩展支持,数据脱敏(后续支持)

sql-builder描述

sql-builder
定义动态SQL的生成规则,用来实现单表的CRUD操作。

核心 sql 接口

详细 api 文档参考: ibit-mybatis 2.x API 文档

说明 接口
搜索 QuerySql
计数 CountSql
删除 DeleteSql
插入 InsertSql
更新 UpdateSql

sql 接口支持

不同类型的 sql, 其语句的约束不一样,下表列举所有的语句支持。

接口 支持方法 说明
ColumnSupport columncolumnPo SELECT column1[, column2...]
语句
DeleteSupport delete DELETE t1.*
语句
DistinctSupport distinct DISTINCT
语句
FromSupport from FROM table1 t1[, table2 t2...]
语句
GroupBySupport groupBy GROUP BY t1.column1[, t2.column2, ...]
语句
HavingSupport havingandHavingorHaving HAVING
语句
InsertTableSupport insert INSERT INTO table1 t1
语句, t1表示 "表别名"
JoinOnSupport joinOnleftJoinOnrightJoinOnfullJoinOninnerJoinOncomplexLeftJoinOncomplexRightJoinOncomplexFullJoinOncomplexInnerJoinOn [LEFT/|RIGHT/|FULL/|INNER] JOIN ON
语句
LimitSupport limit LIMIT #{start}, #{limit}
语句
OrderBySupport orderBy ORDER BY
语句
SetSupport set SET 条件语句
UpdateTableSupport update UPDATE table1 t1[, table2 t2...]
语句,t1,t2表示"表别名"
ValuesSupport values (column1, column2, ...) VALUES(?, ?, ...)
语句
WhereSupport whereandWhereorWhere WHERE
语句

sql 工厂类

工厂类: tech.ibit.mybatis.sqlbuilder.SqlFactory
,一般不直接使用,继承 RawMapper
的 Mapper 可直接创建 QuerySql
CountSql
DeleteSql
InsertSql
UpdateSql
对应实例

Mapper 说明

Mapper 基础支持

ibit-mybatis
定义了 4 种 Mapper,分别是 RawMapper
NoIdMapper
SingleIdMapper
MultipleIdMapper
。以下分别说明。

Mapper 类型 父接口 说明
RawMapper / 定义最原始的增、删、改、查和 Sql 实例创建
NoIdMapper RawMapper 扩展无主键表的增
SingleIdMapper NoIdMapper 扩展单主键表的根据id增、删、改、查
MultipleIdMapper NoIdMapper 扩展多主键表的根据id增、删、改、查

使用 ibit-mybatis-generator
2.x 版本,会根据表主键数量,继承不同的 Mapper。

Mapper 结合 Sql 自定义增、删、改、查

Mapper 创建 Sql 实例方法 实例类型 实例执行方法说明
createQuery QuerySql executeQueryPage:查询(包含分页信息)executeQuery:查询列表executeQueryOne:查询单条executeQueryDefaultPage:查询基本类型(包含分页信息)executeQueryDefault:查询基本类型
createCount CountSql executeCount:计数
createDelete DeleteSql executeDelete:执行删除
createInsert InsertSql executeInsert:执行插入executeInsertWithGenerateKeys:执行插入并生成主键
createUpdate UpdateSql executeUpdate:执行更新

自定义查询例子:

public User getByUsername(String username) {
    if (StringUtils.isBlank(username)) {
        return null;
    }
    return mapper
            .createQuery()
            .columnPo(User.class)
            .from(UserProperties.TABLE)
            .andWhere(UserProperties.username.eq(username))
            .limit(1)
            .executeQueryOne();
}

用法

相关引用

Gradle

compile 'tech.ibit:ibit-mybatis:${lastest}'

Maven

<dependency>
  <groupId>tech.ibit</groupId>
  <artifactId>ibit-mybatis</artifactId>
  <version>${latest}</version>
</dependency>

说明: 将 "${latest}" 替换成 2.0
以上版本。

配置说明

需要将 Mybatis Configuration 的 mapUnderscoreToCamelCase
的值设置为 true。

方式1:使用 mybatis-config.xml

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

方式2:java 代码方式

Configuration configuration = new Configuration(environment);
configuration.setMapUnderscoreToCamelCase(true);

方式3:使用了 mybatis-spring-boot-starter
,修改配置如下

# 字段映射驼峰
mybatis.configuration.map-underscore-to-camel-case=true

其他说明

ibit-mybatis
定义了枚举类型( CommonEnum
,枚举-Integer转换),其 TypeHandler
CommonEnumTypeHandler

如果使用 CommonEnum
作为系统通用枚举类,则需要做以下改造。

a.新的枚举需要实现 CommonEnum#getValue
方法。

b.SqlProvider 需要做配置

SqlProvider.setValueFormatter(new LinkedHashMap<Class, Function<Object, Object>>() {{
    put(tech.ibit.mybatis.CommonEnum.class, o -> ((tech.ibit.mybatis.CommonEnum) o).getValue());
}});

c.修改默认的枚举 TypeHandler

方式1:使用 mybatis-config.xml

<configuration>
    <settings>
        <setting name="defaultEnumTypeHandler" value="tech.ibit.mybatis.CommonEnumTypeHandler"/>
    </settings>
</configuration>

方式2:java 代码方式

Configuration configuration = new Configuration(environment);
configuration.setDefaultEnumTypeHandler(tech.ibit.mybatis.CommonEnumTypeHandler.class);

方式3:使用了 mybatis-spring-boot-starter
,修改配置如下

# 指定默认的枚举处理类
mybatis.configuration.default-enum-type-handler=tech.ibit.mybatis.CommonEnumTypeHandler

原文 

http://www.cnblogs.com/javaDeveloper/p/13222407.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » ibit-mybatis 2.x 介绍

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址