Springboot-cli 开发脚手架系列
Springboot系列:Springboot优雅的整合Mongodb及mongoTemplate使用示例(附源码下载)
前言
致力于让开发者快速搭建基础环境并让应用跑起来,提供使用示例供使用者参考,让初学者快速上手。
1. 环境
- 引入依赖
pom.xml
<!-- 省略get set -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 测试接口 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mongodb依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- json 工具包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
application.yml
spring:
data:
mongodb:
uri: mongodb://127.0.0.1:27017/test
2. 编写实体类
User.java
@Data
@Accessors(chain = true)
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
@Id
private Long userId;
/**
* 用户名
*/
private String username;
/**
* 性别
*/
private String sex;
/**
* 备注
*/
private String remark;
}
3. mongoDB使用示例
- 编写接口
IUserService.java
public interface IUserService {
/**
* 添加用户
*
* @param user 用户数据
*/
void insertUser(User user);
/**
* 批量添加用户
*
* @param users 用户数据
*/
void insertUser(List<User> users);
/**
* 更新用户
*
* @param user 用户数据
*/
void updateUser(User user);
/**
* 查询用户
*
* @param user 用户数据
* @return list
*/
List<User> listUser(User user);
/**
* 删除用户
*
* @param userId 用户id
*/
void deleteUser(Long userId);
}
- 实现类
UserServiceImpl .java
@Service
@Slf4j
@RequiredArgsConstructor
public class UserServiceImpl implements IUserService {
private final MongoTemplate mongoTemplate;
@Override
public void insertUser(User user) {
mongoTemplate.insert(user);
}
@Override
public void insertUser(List<User> user) {
mongoTemplate.insert(user, User.class);
}
@Override
public void updateUser(User user) {
Query eq = Query.query(Criteria.where("userId").is(user.getUserId()));
Update username = new Update()
.set("username", user.getUsername())
.set("sex", user.getSex());
mongoTemplate.updateMulti(eq, username, User.class);
}
@Override
public List<User> listUser(User user) {
// 用来构建条件
Criteria criteria = new Criteria();
// 动态拼接条件,若为空,则不生效
if (Objects.nonNull(user.getUserId())) {
criteria.and("userId").is(user.getUserId());
}
if (StringUtils.hasLength(user.getSex())) {
criteria.and("sex").is(user.getSex());
}
if (StringUtils.hasLength(user.getUsername())) {
// 模糊查询username,CASE_INSENSITIVE:大小写不明感匹配
Pattern pattern = Pattern.compile("^.*" + user.getUsername() + ".*$", Pattern.CASE_INSENSITIVE);
criteria.and("username").regex(pattern);
}
return mongoTemplate.find(Query.query(criteria), User.class);
}
@Override
public void deleteUser(Long userId) {
mongoTemplate.remove(Query.query(Criteria.where("userId").is(userId)), User.class);
}
}
4. 编写测试类
@SpringBootTest
@Slf4j
class JwtDomeApplicationTests {
@Autowired
UserServiceImpl userService;
/**
* 生成模拟数据并保存到mongodb
*/
@Test
void saveUser() {
ArrayList<User> users = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
User user = new User().setUserId((long) i)
.setUsername("王小锤" + i)
.setSex("男")
.setRemark("备注00" + i);
users.add(user);
}
userService.insertUser(users);
}
/**
* 查询
*/
@Test
void listUser() {
// 1.无条件查询
List<User> users1 = userService.listUser(new User());
log.info("1.查询到用户:{}", JSON.toJSONString(users1));
// 2.id查询
List<User> users2 = userService.listUser(new User().setUserId(1L));
log.info("2.查询到用户:{}", JSON.toJSONString(users2));
// 3.多条件查询
List<User> users3 = userService.listUser(new User().setUsername("王小").setSex("男"));
log.info("3.查询到用户:{}", JSON.toJSONString(users3));
}
@Test
void updateUser() {
userService.updateUser(new User().setUserId(1L).setSex("女").setUsername("杨幂"));
}
@Test
void delUser() {
userService.deleteUser(1L);
}
}
5. 效果演示
-
整体代码结构
-
打开robo 3T工具查询,查看数据是否插入成功
-
运行查询
6. 源码分享
本项目已收录
- Springboot-cli开发脚手架,集合各种常用框架使用案例,完善的文档,致力于让开发者快速搭建基础环境并让应用跑起来,并提供丰富的使用示例供使用者参考,帮助初学者快速上手。
- 项目源码github地址
- 项目源码国内gitee地址