原文链接:ibit-mybatis介绍

概述

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

特性

  • 无侵入,引入”ibit-mybatis”对现有工程不会产生影响。
  • 灵活的CRUD(增、删、改、查)操作,内置Dao,Mapper,支持常用的单表CRUD操作,更有强大的SQL构造器(sql-builder),满足更为复杂的操作(如聚合函数、分组、连表)。
  • 内置代码生成器(ibit-mybatis-generator),指定数据库表,自动生成Dao、Mapper、Entity、Properties等基础类,减少重复或者相似代码编写。
  • 扩展支持,分页、数据脱敏
  • 主流微服务框架springboot(ibit-mybatis-springboot-starter)的支持

整体框架图

sql-builder描述

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

模块图

动态SQL构造规则

序号 方法 描述
1 select
selectPo(对象)
selectDistinct
selectDistinctPo(对象)
select [distinct]语句
2 count
countDistinct
select count [distinct]语句
3 deleteFrom
deleteTableFrom(别名)
delete from语句
4 update 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();
}

【转载】ibit-mybatis介绍的更多相关文章

  1. MyBatis - 介绍、简单入门程序

    JDBC编程中的问题     1. 将SQL语句硬编码到Java代码,不利于系统维护.         设想如何解决:将SQL单独抽取出来,在配置文件(xml方式.properties文件)进行配置. ...

  2. Mybatis学习笔记(一) —— mybatis介绍

    一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

  3. (转)MyBatis框架的学习(一)——MyBatis介绍

    http://blog.csdn.net/yerenyuan_pku/article/details/71699343 MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2 ...

  4. MyBatis 介绍

    MyBatis 介绍 MyBatis 是一款优秀的 ORM(Object Relational Mapping,对象关系映射)框架,它可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中. ...

  5. mybatis介绍--基于个人学习JavaWeb的使用

    mybatis介绍 该博文放在javaWeb系列下,目的是记录我们javaWeb阶段所学的知识 @time=2022/3/11/11:52(最近休息玩了两天,今天重新启动生活) 一.mybatis发展 ...

  6. 转载:mybatis自动生成

    MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容 ...

  7. 【转载】Mybatis多参数查询映射

    转载地址:http://www.07net01.com/zhishi/402787.html 最近在做一个Mybatis的项目,由于是接触不久,虽然看了一下资料,但在实际开发中还是暴 露了很多问题,其 ...

  8. mybatis介绍与环境搭建

    一.不用纯jdbc的原因,即缺点. 1.数据库理解,使用时创建,不用时释放,会对数据库进行频繁的链接开启和关闭,造成数据库的资源浪费,影响数据库的性能.设想:使用数据库的连接池.2.将sql语句硬编码 ...

  9. [转载] Redis系统性介绍

    转载自http://blog.nosqlfan.com/html/3139.html?ref=rediszt 虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面 ...

随机推荐

  1. PYTHON经典算法-二叉树的后序遍历

    二叉树的后序遍历 问题描述 给出一个二叉树,返回其节点值的后序遍历 问题示例 给出一个二叉树{1,x,2,3}其中x表示空.后序遍历为[3,2,1] 这个图怎么画的呢?答案 需要注意的地方是:bina ...

  2. SOAP与REST API的爱恨情仇

    之前一直想写些RESTful相关的文章,却一直未付诸行动.直到最近接手一个新的项目,对这块重新温习,乘此机会写些相关帖子.欢迎大家评论留言,如有错漏之处,也望各位大佬不令赐教. 话不多说,干活顶上. ...

  3. 删除我的电脑wps、百度网盘图标

    删除我的电脑wps.百度网盘图标 删除下面子项 输入"计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Expl ...

  4. 表达式属性(C#6.0和C#7.0

    从C#6开始,只读属性可简写为表达式属性.它使用双箭头替换了花括号,get访问器和return关键字. 例如: decimal CurrentPrice,sharedOwned; public dec ...

  5. Ops: 高效组合命令集合

    简介 本篇博客收集一些常用的复杂命令组合,这些命令组合能够高效的定位.分析.处理一些问题,希望对需要的小伙伴有所帮助. 命令集合 批量备份文件 将名称为config.xml的文件查找出来,并在原目录备 ...

  6. 春招必问的redis持久化(RDB AOF),你能答上来么?

    春招面试模拟,如同雷同,纯属巧合!!! 面试的大体流程: 第一步:一般会有笔试题,也可能没有.有笔试题就要好好答了,因为会重视笔试结果,为了节约面试官时间,HR可能先会看,不合格直接让你走人了. 第二 ...

  7. linux下安装php的svn模块

    在php下为了方便使用svn命令,还是安装下php的svn扩展 首先确保机器上已经有lamp或lnmp环境,然后 >yum install subversion subversion-devel ...

  8. 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}

    1.给子域名加www标记  RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC] RewriteCond %{HTTP_HOST} !^www\ ...

  10. java 子线程定时去更改主线程的变量

    在一次代码编写场景,需要post一些数据,同时携带获得的token,(但是token的有效时间是7200s),但是post需要很多次,很长时间,不可能2小时候中断程序,手动去获取token,这样效率太 ...