使用MyBatisPlus的方式,优雅的操作MongoDB MongoPlus是一个新框架,使用MyBatisPlus的方式操作MongoDB,可以说,会用MP就会用这个框架,和mp一样,只需继承即可快速构建CRUD操作 gitee地址:htt
使用MyBatisPlus的方式,优雅的操作MongoDB
MongoPlus是一个新框架,使用MyBatisPlus的方式操作MongoDB,可以说,会用MP就会用这个框架,和mp一样,只需继承即可快速构建CRUD操作
gitee地址:https://gitee.com/anwena/mongo-plus/ 官网地址:https://www.mongoplus.cn/
接下来让我们看该如何使用它快速的进行CRUD操作
首先!你要有一个SpringBoot项目!并且使用在配置文件中配置MongoPlus
这是我的XML文件 ↓↓↓↓↓↓↓
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
<relativePath/>
</parent>
<groupId>com.mongoplus.bolg</groupId>
<artifactId>mongo-plus-bolg</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.gitee.anwena</groupId>
<artifactId>mongo-plus-boot-starter</artifactId>
<!-- 使用最新版 -->
<version>2.0.7.3</version>
</dependency>
</dependencies>
</project>
yml配置文件 ↓↓↓↓↓↓↓
mongo-plus:
data:
mongodb:
host: 127.0.0.1
port: 27017
database: blog
#账号密码没有的话就不用写
#username:
#password:
connectTimeoutMS: 50000
waitQueueTimeoutMS: 50000
log: true
然后!你要有一个实体类!
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//使用ID注解,标识这是_id字段,执行type为ASSIGN_ID,使用雪花算法生成id
@ID(type = IdTypeEnum.ASSIGN_ID)
private String id;
private String userName;
private Integer userStatus;
private Integer age;
private Role role;
}
之后!你要有你的Service!并且将Service继承Iservice,实现类则继承ServiceImpl
Service接口 ↓↓↓↓↓↓↓
public interface UserService extends IService<User> {
}
ServiceImpl实现类 ↓↓↓↓↓↓↓
@Service
public class UserServiceImpl extends ServiceImpl<User> implements UserService {
}
到这里就已经配置完了!多么简单就配置完了
当然,提供了一个类:MongoPlusMapMapper,就是为了Mongo集合结构比较复杂时使用的,会返回一个map结构,直接注入即可使用
接下来!开始测试~~~
首先编写一个测试类,进行save测试!!! ↓↓↓↓↓↓↓
@SpringBootTest
public class BlogTest {
//注入我的service
@Resource
private UserService userService;
@Test
public void insertTest(){
//创建user对象
User user = new User();
user.setUserName("张三");
user.setUserStatus(1);
user.setAge(18);
Role role = new Role();
role.setRoleName("超级管理员");
role.setRoleIntroduce("拥有最高权限");
user.setRole(role);
//直接使用继承IService提供的save方法,和mp一样!
Boolean save = userService.save(user);
System.out.println(save?"添加成功":"添加失败");
}
}
测试代码写完了,执行!
添加成功,完全没问题!因为我在配置文件中配置了log:true,打印了sql日志和返回结果!
添加测试完了,接下来我们在进行一个查询操作!来验证我们刚刚添加的用户有没有添加到数据库里,走起~~
进行查询,还是使用IService提供的方法 ↓↓↓↓↓↓↓
@Test
public void findTest(){
List<User> userList = userService.list();
userList.forEach(System.out::println);
}
好!代码写完了,执行!
完美,成功验证我们刚刚添加的数据,id也是雪花算法类型,并且成功的映射到了我们的实体类中
是不是非常简单就实现了CRUD的操作,可以一个MP打遍天下了!
当然,MyBatisPlus的链式查询是一个特点,MongoPlus也有!接下来我们来写一个链式查询的示例
我已经提前加了四条数据,用来做查询:
好!开始进行lambda链式查询!我们要查询用户状态为1的,并且年龄大于20岁的
@Test
public void lambdaTest(){
List<User> userList = userService.lambdaQuery().eq(User::getUserStatus, 1).gt(User::getAge, 20).list();
userList.forEach(System.out::println);
}