持久层框架 Mybatis-Link V1.0.0 正式版发布

来源: 投稿
作者: easy4use
2021-04-12

欢迎使用 Mybatis-Link V1.0.0 持久层框架

Mybatis Link是一个Mybatis Plus的增强工具,在Mybatis Plus的基础上进行了增强,主要解决一对一、一对多等多表联查,以及允许分布式应用远程调用和优化问题,从而达到敏捷开发的目的,实现零SQL编写。

关于1.0.0 版本更新内容

  • 新增】: 源码官网发布Mybatis-Link
  • 新增】: 全新的Mgr业务层和Dao支持层抽象类。
  • 新增】: 注解@Link类,作用在 Dao 方法上,可以实现一对一连表查询(包括左连接、右连接、内连接),一对多连表查询。
  • 新增】: 新增支持Wrapper在RPC中的调用,新建了FindWrapper查询类。
  • 新增】: 新增支持枚举类,以及枚举类翻译输出。
  • 新增】: 新增分页查询二级缓存返回列表和条数。
  • 新增】: 增加注解@VoDef类,对查询结果,可以直接返回实体类(Vo)。
  • 新增】: 增加动态表名,查询可以通过表名过滤。
  • 新增】: 增加数据库层面的批量新增。

零SQL:

采用注解的方式支持连表查询,满足大多数项目连表要求,可以实现零SQL编写。

连表查询示例:

更多连表示例:https://easy4use.cn/guide/link-search.html

/**
 * a 内连 c
 * a表的c_id字段,与c表中的id主键字段,进行连表查询。
 */
@Link(ones = { @OneToOne(leftColumn = "c_id", rightClass = TestCVo.class) })
List<TestADto> listTestAATestC(@Param(Constants.WRAPPER) Wrapper<TestAVo> wrapper);

/**
 * a 左连 b
 */
@Link( ones = { 
    @OneToOne(leftColumn = "b_id", rightClass = TestBVo.class, 
        joinType = JoinType.LEFT, onArgName = "abOn") })
List<TestADto> listTestALtTestB(@Param(Constants.WRAPPER) Wrapper<TestAVo> wrapper);

/**
 * a 一对多 b
 */
@Link( manys = { 
    @OneToMany(leftColumn = "b_id", rightClass = TestBVo.class, 
        ofTypeClass = TestBDto.class, property = "testBList") })
List<TestADto> listTestAWTestB(@Param(Constants.WRAPPER) Wrapper<TestAVo> wrapper);

配置:

mybatis-plus:
  typeAliasesPackage: yui.bss.*.vo
  mapperLocations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: ASSIGN_ID
      field-strategy: NOT_NULL
      column-underline: true
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
    banner: false
    sql-parser-cache: true
    super-mapper-class: yui.comn.mybatisx.core.mapper.BaseDao

最新Maven版本:

<dependency>
    <groupId>com.gitee.easy4use</groupId>
    <artifactId>mybatis-link-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

 

欢迎使用 Mybatis-Link 插件 Hub-Link V1.0.0 数据处理

Hub Link是数据加工中心,作为Mybatis Link的增强工具,可以就像咖啡伴侣一样,在使用Mybatis-Link的时候更加丝滑。作为数据加工中心,会对进出数据进行加工处理。

关于1.0.0 版本更新内容

  • 新增】: 支持阿里JSON序列化。
  • 新增】: 支持枚举类过滤输出
  • 新增】: 支持连表查询,数据输出。
  • 新增】: 增加处理机质,可以在数据输出前,对数据进行处理。
  • 新增】: 支持查询条件配置。
  • 新增】: 支持数据输出同时,增加字段翻译。
  • 新增】: 增加query.js前端查询封装。

特性

  • 无侵入: 采用插件的形式,对进出数据进行加功处理。
  • 插件: 可以作为Mybatis-Link的增强工具,两者可以一起使用。
  • 请求数据: 每个controller都会对应一个xml,通过xml配置对请求数据进行加功处理。
  • 返回数据: 每个controller都会对应一个xml,通过xml配置对返回数据进行加功处理。

查询示例:

更多查询示例:https://easy4use.cn/guide/query-start.html

查询接口

sys/user/list?this.$query.toQ(qry)

过滤条件

let qry = this.$query.new()
this.$query.toR(qry, 'username', 'test')

查询参数

{"w":[],"r":[{"n":"a1","t":"and","w":[{"k":"username","v":"test","m":"",
    "t":"and","s":0}]}],"o":[],"j":[],"p":{},"s":{}}

sql输出

SELECT t_sys_user.`id` t_sys_user__id, t_sys_user.`role_id` t_sys_user__role_id, t_sys_user.`username` t_sys_user__username, t_sys_user.`email` t_sys_user__email, t_sys_user.`rmks` t_sys_user__rmks, t_sys_user.`type` t_sys_user__type 
FROM t_sys_user 
WHERE ((t_sys_user.USERNAME LIKE ?))

返回结果

{
    "code": 0,
    "header": {
        "typeDsr": "类型(0:管理员,1:非管理员)描述",
        "id": "ID",
        "roleId": "角色ID",
        "username": "登录名",
        "email": "邮件",
        "rmks": "备注",
        "type": "类型(0:管理员,1:非管理员)"
    },
    "data": {
        "list": [
            {
                "id": 3,
                "roleId": 3,
                "username": "test",
                "email": "test@163.com",
                "rmks": "test",
                "type": 1,
                "typeDsr": "普通用户"
            }
        ]
    }
}

出参示例:

更多查询示例:https://easy4use.cn/guide/data-out.html

XML配置

<grid name="USER_ROLE">
    <col type="yui.bss.demo.vo.SysUserVo" />
    <col prefix="role" type="yui.bss.demo.vo.SysRoleVo" />
</grid>

返回结果

{
    "code": 0,
    "header": {
        "typeDsr": "类型(0:管理员,1:非管理员)描述",
        "id": "ID",
        "roleId": "ID",
        "username": "登录名",
        "email": "邮件",
        "rmks": "备注",
        "type": "类型(0:管理员,1:非管理员)",
        "roleCd": "编码",
        "roleNm": "名称",
        "roleRmks": "备注"
    },
    "data": {
        "list": [
            {
                "id": 1,
                "roleId": 1,
                "username": "admin",
                "email": "demo@163.com",
                "rmks": "admin",
                "type": 0,
                "roleCd": "ROLE_ADMIN",
                "roleNm": "管理员",
                "roleRmks": "管理员",
                "typeDsr": "管理员"
            }
        ]
    }
}

最新Maven版本:

<dependency>
    <groupId>com.gitee.easy4use</groupId>
    <artifactId>hub-link-annotation</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>com.gitee.easy4use</groupId>
    <artifactId>hub-link-core</artifactId>
    <version>1.0.0</version>
</dependency>

附:项目信息

项目官网:https://easy4use.cn/

Mybaits-Link项目源码:https://gitee.com/easy4use/mybatis-link

Hub-Link源码:https://gitee.com/easy4use/hub-link

项目示例:https://gitee.com/easy4use/mybatis-link-samples

展开阅读全文
12 收藏
分享
加载中
21 评论
12 收藏
分享
返回顶部
顶部