zoukankan      html  css  js  c++  java
  • 【转载】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();
    }
    
  • 相关阅读:
    C++笔记(1)----此运算符函数的参数太多
    算法学习(6)----整数转换为格雷码
    算法学习(5)----二叉树前序、中序、后序遍历互相转换
    算法学习(4)----汉诺塔递归算法和非递归算法
    算法学习(3)----求数组中大小最接近的两个元素的差
    算法学习(2)----丢番图方程
    9.11 Django视图 view和路由
    9.11 Django关于母版语言的灵活用法
    9.10Django模板
    9.9Dajngo MTV
  • 原文地址:https://www.cnblogs.com/javaDeveloper/p/12051959.html
Copyright © 2011-2022 走看看