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 的一种扩展