【转载】ibit-mybatis介绍
原文链接: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介绍的更多相关文章
- MyBatis - 介绍、简单入门程序
JDBC编程中的问题 1. 将SQL语句硬编码到Java代码,不利于系统维护. 设想如何解决:将SQL单独抽取出来,在配置文件(xml方式.properties文件)进行配置. ...
- Mybatis学习笔记(一) —— mybatis介绍
一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- (转)MyBatis框架的学习(一)——MyBatis介绍
http://blog.csdn.net/yerenyuan_pku/article/details/71699343 MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2 ...
- MyBatis 介绍
MyBatis 介绍 MyBatis 是一款优秀的 ORM(Object Relational Mapping,对象关系映射)框架,它可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中. ...
- mybatis介绍--基于个人学习JavaWeb的使用
mybatis介绍 该博文放在javaWeb系列下,目的是记录我们javaWeb阶段所学的知识 @time=2022/3/11/11:52(最近休息玩了两天,今天重新启动生活) 一.mybatis发展 ...
- 转载:mybatis自动生成
MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容 ...
- 【转载】Mybatis多参数查询映射
转载地址:http://www.07net01.com/zhishi/402787.html 最近在做一个Mybatis的项目,由于是接触不久,虽然看了一下资料,但在实际开发中还是暴 露了很多问题,其 ...
- mybatis介绍与环境搭建
一.不用纯jdbc的原因,即缺点. 1.数据库理解,使用时创建,不用时释放,会对数据库进行频繁的链接开启和关闭,造成数据库的资源浪费,影响数据库的性能.设想:使用数据库的连接池.2.将sql语句硬编码 ...
- [转载] Redis系统性介绍
转载自http://blog.nosqlfan.com/html/3139.html?ref=rediszt 虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面 ...
随机推荐
- axios请求方法封装.
axios的使用上一般封装好对应的方法,ES6导出,直接调用,消息通知使用了ElementUI的Message组件. 这是一个封装了axios的Rest风格的工具类,包扩常用的POST,GET,PUT ...
- 团队第一次作业(软工C#造梦厂)
一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...
- C# winform 弹框提示内存不足
看了下面一片博文解决的 Winform 内存不足Winform,我给PictureBox 赋值 picBox_One.BackgroundImage = Image.FromFile("图片 ...
- 使用Python写的WingPro7 Pyside2 和 PyQt5插件
pyside2的 import wingapi import subprocess pyside2_uic = "pyside2-uic" pyside2_qrc = " ...
- Idea-LifecycleException when deploying
案例 今天第一次用idea构建项目,出现了如下问题: FAIL - Application at context path /myWebApp could not be started FAIL - ...
- Docker(一):理解Docker镜像与容器
一.镜像的概念 1.广泛镜像概念: 镜像是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在完全相同的副本即为镜像. 2.Docker镜像概念: 在Docker中镜像同样是一种完全 ...
- gentoo在KVM+QEMU中安装笔记
gentoo是比较难安装的,本笔记主要是记录本次安装过程,以备参考. 1.首先,下载镜像,可以去国内各大镜像网站下载,我选择的是清华的镜像源:https://mirrors.tuna.tsinghua ...
- Go语言实现:【剑指offer】字符流中第一个不重复的字符
该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是 ...
- AD域SSP安全防护
一.简介 SSP(Security Support Provider)是windows操作系统安全机制的提供者.简单的说,SSP就是DLL文件,主要用于windows操作系统的身份认证功能,例如NTL ...
- 面试官:“看你简历上写熟悉 Handler 机制,那聊聊 IdleHandler 吧?”
一. 序 Handler 机制算是 Android 基本功,面试常客.但现在面试,多数已经不会直接让你讲讲 Handler 的机制,Looper 是如何循环的,MessageQueue 是如何管理 M ...