21 Star 45 Fork 9

drinkjava2 / myfat

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.71 KB
一键复制 编辑 原始数据 按行查看 历史
drinkjava2 提交于 2019-09-05 04:43 . v3.0.0 Release

myfat-logo

MyFat让MyBatis更胖

maven code style

简介 | Intro

MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis的短板。

优点 | Advantages

  1. 无侵入性,对于使用MyBatis的项目唯一要做的只是添加MyFat依赖即可,不用更改任何其它配置文件和代码。
  2. 功能全,补足了MyBatis不提供CRUD的短板,以下为增强后的功能:
    跨数据库分页、DDl生成、实体源码生成、函数变换、主键生成、多种SQL写法、DataMapper、ActiveRecord、Tail、实体越级关联查询、主从、分库分表、分布式事务等。
  3. 架构更合理,它不是基于MyBatis内核开发,而是整合了jSqlBox的功能,项目本身是模块式开发,可维护性好。

与其它Mybatis插件如Mapper或MyBatis-Plus的区别

  1. 源码少,MyFat本身不提供DAO功能,源码只有7个类,起到粘合剂的作用,jar包大小25k。
  2. 由jSqlBox提供的ActiveRecord可以只声明接口(Java8),不一定需要继承类,也不需要定义Mapper,更无侵入性。
  3. 它没有专门的分页方法,但是所有SQL查询都可以分页,无侵入性。
  4. 支持的SQL写法更多,如参数内嵌式SQL写法、实体越级关联查询等,实体类更符合JPA注解。

文档 | Documentation

中文 | English | JavaDoc

配置 | Configuration

在pom.xml中加入以下内容即可,注意MyFat必须先于MyBatis加载:

<dependency>
   <groupId>com.github.drinkjava2</groupId>
   <artifactId>myfat</artifactId>
   <version>3.0.0</version> <!--或最新版-->
</dependency> 

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version> <!--或最新版--> 
</dependency> 

如果在Spring环境下,则上面的第二项要改成Spring的包,如:

  <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
	  <version>2.1.0</version> <!--或最新版--> 
  </dependency>

入门 | First Example

以下示例演示了myfat的基本配置和使用:

public class HelloWorld implements ActiveEntity<HelloWorld> {
    private String name;
    public String getName() {return name; }
    public void setName(String name) {this.name = name; }

    public static void main(String[] args) {
        DataSource ds = JdbcConnectionPool
                .create("jdbc:h2:mem:DBName;MODE=MYSQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0", "sa", "");
        SqlBoxContext ctx = new SqlBoxContext(ds);
        SqlBoxContext.setGlobalSqlBoxContext(ctx);
        String[] ddls = ctx.toCreateDDL(HelloWorld.class);
        for (String ddl : ddls)
               ctx.nExecute(ddl);

        new HelloWorld().putField("name", "Hello myfat").insert();
        System.out.println(ctx.iQueryForString("select name from HelloWorld"));
    }
}

范例 | Demo

  • myfat-springboot 演示myfat在SpringBoot环境下的配置和使用。
  • myfat-springboot-mp 演示在SpringBoot环境下myfat对MyBatis-plus的功能增强。
  • myfat-java8-demo 主要演示myfat的两个特点:实体类也可以只声明接口、利用Lambda来写SQL。

作者其它开源项目 | Other Projects

期望 | Futures

欢迎发issue提出更好的意见或提交PR,帮助完善myfat

版权 | License

Apache 2.0

关注我 | About Me

Github
码云

Java
1
https://gitee.com/drinkjava2/myfat.git
git@gitee.com:drinkjava2/myfat.git
drinkjava2
myfat
myfat
master

搜索帮助