Springboot快速整合Mongodb及mongoTemplate使用示例(附源码下载)
Springboot-cli 开发脚手架系列
Springboot系列:Springboot优雅的整合Mongodb及mongoTemplate使用示例(附源码下载)
文章目录
- Springboot-cli 开发脚手架系列
- 前言
-
- 1. 环境
- 2. 编写实体类
- 3. mongoDB使用示例
- 4. 编写测试类
- 5. 效果演示
- 6. 源码分享
前言
致力于让开发者快速搭建基础环境并让应用跑起来,提供使用示例供使用者参考,让初学者快速上手。
- 项目源码github地址
- 项目源码国内gitee地址
1. 环境
- 引入依赖
pom.xml
<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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <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@RequiredArgsConstructorpublic 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@Slf4jclass 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地址