- 创建数据表
首先,我们需要创建一个数据表来存储数据字典的信息。这个表可以包括如下字段:
- 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='数据字典';
- 配置 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)添加数据
在 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 接口供前端调用。
- 实现 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 接口来进行增删改查操作。




