日常开发中经常会用到枚举类型,在 Mybatis Plus 中使用枚举,可以提高代码的可读性,省去数据类型的转换,非常方便。
首先把依赖的包添加进去:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>MysqL</groupId>
<artifactId>MysqL-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
之后按照步骤一步一步配置:
1.定义枚举类型
package com.example.demo.enums;
import com.baomidou.mybatisplus.annotation.IEnum;
import lombok.Getter;
@Getter
public enum GenderTypeEnum implements IEnum<Integer> {
WOMAN(0, "女"),
MAN(1, "男"),
PRIVACY(2, "保密");
private Integer value;
private String message;
GenderTypeEnum(Integer value, String message) {
this.value = value;
this.message = message;
}
@Override
public Integer getValue() {
return this.value;
}
@Override
public String toString() {
return this.message;
}
}
2.配置枚举包扫描
有两种方式进行配置:
(1) 在配置文件中新增配置项
mybatis-plus.type-enums-package=com.example.demo.enums
(2) 在Java 配置类中添加配置项
@Bean("sqlSessionFactory")
public sqlSessionFactory sqlSessionFactory() throws Exception {
MybatissqlSessionfactorybean sqlSessionFactory = new MybatissqlSessionfactorybean();
......
sqlSessionFactory.setTypeEnumsPackage("com.example.demo.enums");
return sqlSessionFactory.getObject();
}
这里的路径: com.example.demo.enums 配置的是枚举类所在包名。
3.创建数据库表
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.创建使用枚举的实体类
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.example.demo.enums.GenderTypeEnum;
import lombok.Data;
import org.springframework.data.annotation.Id;
@Data
@TableName("user")
public class User {
@Id
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private GenderTypeEnum sex = GenderTypeEnum.PRIVACY;
}
这里的性别被定义为枚举类型,实际库表中存储的是整型,数据内容如下所示:

5.创建查询使用的服务类
package com.example.demo.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.enums.GenderTypeEnum;
import com.example.demo.entity.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class EnumService {
@Autowired
private UserMapper userMapper;
public Map getAllUsers() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex", GenderTypeEnum.WOMAN);
List<User> users = userMapper.selectList(queryWrapper);
Map<String, List> map = new HashMap<>();
map.put("info", users);
return map;
}
}
6.创建查询使用的控制类
package com.example.demo.controller;
import com.example.demo.service.EnumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class EnumController {
@Autowired
private EnumService enumService;
@GetMapping("/getAllUsers")
public Map getAllUsers() {
return enumService.getAllUsers();
}
}
启动后,访问路径即可获取到对应数据:
 (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|