原文链接: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. 创建dynamics CRM client-side (二) - Client API

    如果我们想用script来直接在form上做一些修改, 我们需要用到client api 来做交互. 我们可以用以下来理解: Form <---> Client API <---&g ...

  2. 史上最详细的二叉树、B树,看不懂怨我

    今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入.搜索.删除的效率都比较高.红黑树也是实现 TreeMap 存储结构的基石. 1.二 ...

  3. JSON Web Token 是什么?

    免费获得官方JWT手册并深入学习JWT吧! 简介 JSON Web Token(缩写JWT),是一套开放的标准(RFC 7519),它定义了一种紧凑且自URL安全的方式,以JSON对象的方式在各方之间 ...

  4. HanLP《自然语言处理入门》笔记--2.词典分词

    2. 词典分词 中文分词:指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本. 中文分词算法大致分为基于词典规则与基于机器学习这两大派. 2.1 什么是词 在基于词典的中文分词中,词 ...

  5. Git详解之分支使用

    前言 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本 ...

  6. Spring 框架初学

    一 .   spring IOC, DI: 将原来有程序员建立类的对象工作交由spring来操作: 从外部来看: 将各个类以bean 的方式配在spring容器的配置文件中(application.x ...

  7. Nginx-入门(源码编译安装http://nginx.org/en/download.html)

    比较早的时候  web主要经典组合--->LAMP 近几年---->nginx后来居上--->LNMP=LEMP   Nginx = Engine x Nginx和Apache 都是 ...

  8. TCP UDP协议的三次握手

    接触网络协议栈TCP/IP的人,就一定绕不开的一个话题就是TCP的三次握手.下面我将简单介绍一下. 三次握手流程的本质,可以这么理解:TCP的三次握手其实是双方各一次握手,各一次确认,只是其中一次握手 ...

  9. python 利用selenium爬取百度文库的word文章

    今天学习如何使用selenium库来爬取百度文库里面的收费的word文档 from selenium import webdriver from selenium.webdriver.common.k ...

  10. java(list,set,map)链接

    http://blog.csdn.net/smileiam/article/details/49836865 http://blog.csdn.net/u013344815/article/detai ...