fastmybatis 2.3.2 发布,mybatis 开发利器

fastmybatis 2.3.2 发布,本次更新内容如下:

  • 支持查询列表并将结果转换成树结构。

有一张菜单表,具备父子关系

CREATE TABLE `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(64) NOT NULL COMMENT '菜单名称',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父节点',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单表';

插入数据:

INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (1, '水果', 0);
INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (2, '苹果', 1);
INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (3, '香蕉', 1);
INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (4, '数码产品', 0);
INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (5, '手机', 4);
INSERT INTO `menu` (`id`, `name`, `parent_id`) VALUES (6, '电脑', 4);

parent_id=0表示没有父节点,即自己就是父节点

实体类

public class Menu implements TreeNode<Menu, Integer> {

     private Integer id;
     private String name;
     // 父节点id
     private Integer parentId;
     // 子节点
     private List<Menu> children;

     @Override
     public Integer takeId() {
         return getId();
     }

     @Override
     public Integer takeParentId() {
         return getParentId();
     }

     @Override
     public void setChildren(List<Menu> children) {
         this.children = children;
     }

     getter setter...
}

查询

// 查询出来的结果已经具备父子关系
List<Menu> treeData = mapper.listTreeData(query, 0);
System.out.println(JSON.toJSONString(treeData, SerializerFeature.PrettyFormat));

打印结果:

[
	{
		"children":[
			{
				"children":[],
				"id":2,
				"name":"苹果",
				"parentId":1
			},
			{
				"children":[],
				"id":3,
				"name":"香蕉",
				"parentId":1
			}
		],
		"id":1,
		"name":"水果",
		"parentId":0
	}
]

改变返回字段

public static class MenuDTO implements TreeNode<MenuDTO, Integer> {

        @JSONField(name = "value")
        private Integer id;

        @JSONField(name = "label")
        private String name;

        @JSONField(name = "pid")
        private Integer parentId;

        private List<MenuDTO> children;

}
 List<MenuDTO> treeData = mapper.listTreeData(new Query(), 0, MenuDTO::new);
 System.out.println(JSON.toJSONString(treeData, SerializerFeature.PrettyFormat));

打印:

[
	{
		"items":[
			{
				"items":[],
				"label":"苹果",
				"pid":1,
				"value":2
			},
			{
				"items":[],
				"label":"香蕉",
				"pid":1,
				"value":3
			}
		],
		"label":"水果",
		"pid":0,
		"value":1
	},
	{
		"items":[
			{
				"items":[],
				"label":"手机",
				"pid":4,
				"value":5
			},
			{
				"items":[],
				"label":"电脑",
				"pid":4,
				"value":6
			}
		],
		"label":"数码产品",
		"pid":0,
		"value":4
	}
]

关于 fastmybatis

fastmybatis 是一个 mybatis 开发框架,其宗旨为:简单、快速、有效。

  • 零配置快速上手,无需依赖 Spring
  • 无需编写 xml 文件即可完成增删改查操作
  • 支持 mysql、sqlserver、oracle、postgresql、sqlite
  • 支持自定义 sql,对于基本的增删改查不需要写 SQL,对于其它特殊 SQL(如统计 SQL)可写在 xml 中
  • 支持与 spring-boot 集成,依赖 starter 即可
  • 支持插件编写
  • 支持 ActiveRecord 模式
  • 支持多租户
  • 提供通用 Service
  • API 丰富,多达 40 + 方法,满足日常开发需求。
  • 轻量级,无侵入性,是官方 mybatis 的一种扩展

猜你喜欢

转载自www.oschina.net/news/201684