ZBLOG

springboot+mybatisplus实现数据字典及通用前端可调用接口

  1. 创建数据表

首先,我们需要创建一个数据表来存储数据字典的信息。这个表可以包括如下字段:

  • id:主键
  • type_code:字典类型编码
  • item_code:字典项编码
  • item_name:字典项名称
  • sort_order:排序号

可以使用如下 SQL 语句创建数据表:

CREATE TABLE `sys_dict` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `type_code` varchar(32) NOT NULL COMMENT '字典类型编码',
  `item_code` varchar(32) NOT NULL COMMENT '字典项编码',
  `item_name` varchar(64) NOT NULL COMMENT '字典项名称',
  `sort_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序号',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典';
  1. 配置 MybatisPlus

然后,我们需要配置 MybatisPlus 来实现对数据字典表的增删改查操作。具体步骤如下:

(1)添加依赖

在 pom.xml 文件中添加如下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatisplus.version}</version>
</dependency>

其中,${mybatisplus.version} 是 MybatisPlus 的版本号。

(2)配置数据源

在 application.yml 文件中配置数据源信息,例如:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

(3)配置 MybatisPlus

创建配置类 MybatisPlusConfig,继承自 MybatisPlusAutoConfiguration,然后添加如下注解:

@Configuration
@MapperScan("com.example.mapper")
public class MybatisPlusConfig extends MybatisPlusAutoConfiguration {
}

其中,@MapperScan 用于指定 Mapper 接口所在的包路径。

(4)创建实体类

创建实体类 SysDict,对应数据表 sys_dict,具体代码如下:

@Data
@TableName("sys_dict")
public class SysDict implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField("type_code")
    private String typeCode;

    @TableField("item_code")
    private String itemCode;

    @TableField("item_name")
    private String itemName;

    @TableField("sort_order")
    private Integer sortOrder;
}

其中,@TableName 和 @TableId 是 MybatisPlus 提供的注解,用于指定数据表名和主键字段。

(5)创建 Mapper 接口

创建 Mapper 接口 SysDictMapper,继承自 BaseMapper,具体代码如下:

@Repository
public interface SysDictMapper extends BaseMapper<SysDict> {
}

其中,@Repository 是 SpringBoot 提供的注解,用于标识这是一个 DAO 层组件。

至此,MybatisPlus 的配置就完成了。接下来,我们可以编写业务代码,实现对数据字典表的增删改查操作。

  1. 实现业务代码

(1)添加数据

在 SysDictService 类中,添加如下方法:

public boolean add(SysDict dict) {
    return save(dict);
}

其中,save() 方法是 MybatisPlus 提供的方法,用于插入一条记录。

(2)删除数据

在 SysDictService 类中,添加如下方法:

public boolean delete(Long id) {
    return removeById(id);
}

其中,removeById() 方法是 MybatisPlus 提供的方法,用于根据主键删除一条记录。

(3)修改数据

在 SysDictService 类中,添加如下方法:

public boolean update(SysDict dict) {
    return updateById(dict);
}

其中,updateById() 方法是 MybatisPlus 提供的方法,用于根据主键更新一条记录。

(4)查询数据

在 SysDictService 类中,添加如下方法:

public List<SysDict> list(Map<String, Object> params) {
    QueryWrapper<SysDict> wrapper = new QueryWrapper<>();
    if (params != null && !params.isEmpty()) {
        String typeCode = (String) params.get("typeCode");
        if (StringUtils.isNotBlank(typeCode)) {
            wrapper.eq("type_code", typeCode);
        }
        String itemCode = (String) params.get("itemCode");
        if (StringUtils.isNotBlank(itemCode)) {
            wrapper.eq("item_code", itemCode);
        }
    }
    wrapper.orderByAsc("sort_order");
    return list(wrapper);
}

其中,QueryWrapper 是 MybatisPlus 提供的查询条件构造器,用于构造查询条件。在本例中,我们使用 QueryWrapper 来构造 WHERE 子句,并添加排序规则。

到此为止,数据字典的业务代码就完成了。接下来,我们需要将这些业务代码暴露成 RESTful 接口供前端调用。

  1. 实现 RESTful 接口

(1)创建 Controller 类

创建 SysDictController 类,添加如下注解:

@RestController
@RequestMapping("/dict")
public class SysDictController {
}

其中,@RestController 是 SpringBoot 提供的注解,用于标识这是一个 RESTful 接口组件。

(2)注入 Service 组件

在 SysDictController 类中,注入 SysDictService 组件,代码如下:

@Autowired
private SysDictService dictService;

其中,@Autowired 是 SpringBoot 提供的注解,用于自动注入依赖的组件。

(3)实现增删改查接口

根据业务需求,实现增删改查接口。例如:

@PostMapping("/")
public Result add(@RequestBody SysDict dict) {
    boolean result = dictService.add(dict);
    if (result) {
        return Result.success();
    } else {
        return Result.failure("添加失败");
    }
}

@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
    boolean result = dictService.delete(id);
    if (result) {
        return Result.success();
    } else {
        return Result.failure("删除失败");
    }
}

@PutMapping("/")
public Result update(@RequestBody SysDict dict) {
    boolean result = dictService.update(dict);
    if (result) {
        return Result.success();
    } else {
        return Result.failure("更新失败");
    }
}

@GetMapping("/")
public Result list(@RequestParam(required = false) String typeCode,
                   @RequestParam(required = false) String itemCode) {
    Map<String, Object> params = new HashMap<>();
    params.put("typeCode", typeCode);
    params.put("itemCode", itemCode);
    List<SysDict> list = dictService.list(params);
    return Result.success(list);
}

其中,@PostMapping、@DeleteMapping、@PutMapping 和 @GetMapping 是 SpringBoot 提供的注解,用于指定 HTTP 请求方法和请求路径。

(4)实现统一异常处理

在 SysDictController 类中,添加如下方法:

@ExceptionHandler(Exception.class)
public Result handleException(Exception e) {
    log.error(e.getMessage(), e);
    return Result.failure(e.getMessage());
}

其中,@ExceptionHandler 是 SpringBoot 提供的注解,用于捕获异常并返回错误信息。这个方法会处理所有未被其他方法捕获的异常。

到此为止,我们已经完成了数据字典的实现。前端可以通过调用 RESTful 接口来进行增删改查操作。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1124

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?