springboot+jpa+mongodb开发实战

2023-05-16

  mongodb作为nosql数据库的一种,在javaee开发中也越来越受到重视,这里介绍springboot+jpa+mongodb开发过程。

1、新建maven工程,引入springboot和mongodb依赖。

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.22</version>
        </dependency>
    </dependencies>

2、编写application.yml配置文件,配置mongodb数据库

application.yml

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/webserver

3、编写实体类并做映射配置

User.java

package com.xxx.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "xx_user")
@Data
@AllArgsConstructor
@ToString
public class User {
    @Id
    private Long id;
    private String username;
    private String password;
    private int age;
}

4、编写Repository接口,访问数据库。

UserRepository.java

package com.xxx.dao;
import com.xxx.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends MongoRepository<User,Long>{
}

5、编写Service接口,并新建测试。

UserService.java

package com.xxx.service;
import com.xxx.dao.UserRepository;
import com.xxx.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    public User findOne(Long id){
        return userRepository.findById(id).get();
    }

    public User save(User user){
        return userRepository.save(user);
    }

    public List<User> queryAll(){
        return userRepository.findAll();
    }
}

UserServiceTest.java

package com.xxx.service;
import com.xxx.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import static org.junit.Assert.*;
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserServiceTest {
    @Autowired
    private UserService userService;
    @Test
    public void findOne() throws Exception {
        User user = userService.findOne(3L);
        System.out.println(user);
        assertEquals("null",user.getPassword());
    }

    @Test
    public void save() throws Exception {
        User user = new User(3L,"convertor","null",0);
        assertEquals("convertor",userService.save(user).getUsername());
    }

    @Test
    public void queryAll() throws Exception {
        List<User> list = userService.queryAll();
        assertEquals(3,list.size());
    }

}

单元测试用的是SpringBootTest,这里条件设置的合理,测试结果基本就都是绿的。

6、补充:如何让mongodb中的collection去掉属性_class

添加bean配置

package com.xxx.config;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

@Configuration
public class MongoMappingConfig {
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, 
    MongoMappingContext context, BeanFactory beanFactory){
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver,context);
        try{
            converter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
        }catch (Exception e){
            e.printStackTrace();
        }
        //don't save column _class to mongo collection
        converter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return converter;
    }
}

再次单元测试,发现数据库中的结果如下:

> db.xx_user.find()
{ "_id" : NumberLong(1), "username" : "windows", "password" : "win7", "age" : 7, "_class" : "com
.xxx.entity.User" }
{ "_id" : NumberLong(2), "username" : "mongodb", "password" : "mongo", "age" : 3, "_class" : "co
m.xxx.entity.User" }
{ "_id" : NumberLong(3), "username" : "convertor", "password" : "null", "age" : 0 }
>

前面两条数据是没有配置mongodb的TypeMapper生成的,带有_class属性字段,_id为3的数据是配置了TypeMapper之后生成的,去掉了_class属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot+jpa+mongodb开发实战 的相关文章

随机推荐

  • windows安装解压版postgresql9.6

    1 下载并解压postgresql到系统一个目录 2 初始化数据库 初始化之前 xff0c 需要设置一个存储数据库的文件夹data目录 这里设置在postgresql安装目录下 进入安装目录 xff0c 运行如下命令 bin initdb
  • CentOS 7连接mysql 8提示2059 - authentication plugin ‘caching_sha2_password

    环境 xff1a CentOS 7 4 1708 mysql 8 0 11 Navicat 12 解决办法 1 由于myslq8不支持动态修改密码验证方式 xff0c 所以要先停止mysql systemctl stop mysqld se
  • mongodb副本集集群中节点出现recovering状态解决办法

    记录一次mongodb在生产环境中从节点出现recovering状态的问题解决过程 进入mongo shell命令行 xff0c 通过rs conf 命令查看节点状态 xff0c 出现RECOVERING 查看日志 xff0c 错误日志截图
  • mongodb3.4+sharding分片集群环境搭建

    背景 xff1a mongodb集群搭建方式有三种 xff0c 1 主从 官方已经不推荐 xff0c 2 副本集 xff0c 3 分片 这里介绍如何通过分片sharding方式搭建mongodb集群 sharding集群方式也基于副本集 x
  • eclipse+android开发logcat无法输出日志解决办法

    eclipse打开logcat视图 xff0c 应用程序启动 xff0c 连接设备 xff0c 即使logcat日志级别调试到verbose xff0c 仍然无法打印日志 问题在于adt版本和android版本不兼容 xff0c 如果你的a
  • 30分钟搞定个推sdk安卓客户端接入

    所需的工具 eclipse 43 adt 43 logcat 43 安卓手机 43 联网 1 注册成为个推开发者 个推官方网站 xff1a https dev getui com dev 2 登记应用 接下来 xff0c 填写应用详细信息
  • 30分钟搞定极光sdk安卓客户端接入

    1 注册成为极光开发者 xff0c 极光开发者平台官方网站 xff1a https www jiguang cn 2 登录极光开发者平台 xff0c 进入开发者服务 xff0c 创建应用 填写相关信息 xff0c 应用icon 应用名称 创
  • mina框架实现长连接与android客户端通信

    这篇文章也是通过学习mina框架视频来的 xff0c 网上也有很多类似的代码 xff0c 这里通过自己敲一遍代码 xff0c 熟悉mina框架的使用以及安卓编程 mina框架作为一个网络异步编程框架 xff0c 它和netty一样 xff0
  • rabbitmq开启webui界面管理

    默认情况下 xff0c 安装完成rabbitmq xff0c 启动成功 xff0c 并不会开启webui的http访问服务 通过rabbitmq plugins list查看rabbitmq插件 xff0c 发现rabbitmq manag
  • centos7下设置vi的colorscheme

    每次在centos机器上使用vi编辑文件 xff0c 发现总是默认的黑底白字 xff0c 效果非常不好 xff0c 于是 xff0c 开始着手让vi编辑界面有色彩 开始直接设置 etc virc 修改完成之后 xff0c 由于系统没有mur
  • windows上psycopg2安装过程

    psycopg2是python操作postgresql的扩展库 xff0c 在windows下 xff0c 可以通过pip install psycopg2来安装 刚开始安装时我的pip是anaconda自带的pip 在anaconda3
  • windows上安装Scrapy

    Scrapy是一个python系统网络爬虫框架 xff0c 应用广泛 通过pip install Scrapy安装 xff0c 始终提示Unable to find vsvarsdll bat 通过pip install Twisted x
  • BZOJ 4730: Alice和Bob又在玩游戏

    Description Alice和Bob在玩游戏 有n个节点 xff0c m条边 0 lt 61 m lt 61 n 1 xff0c 构成若干棵有根树 xff0c 每棵树的根节点是该连通块内编号最 小的点 Alice和Bob轮流操作 xf
  • 五分钟配置好vs2017+opencv3.4.1开发环境

    opencv提供了丰富的图像处理功能 xff0c 这里介绍vs2017 43 opencv开发环境配置 1 下载安装opencv 3 4 1 opencv官网地址 xff0c https opencv org xff0c 这里就下载wind
  • windows部署hadoop-2.7.0

    这里使用自己编译的hadoop 2 7 0版本部署在windows上 xff0c 记得几年前 xff0c 部署hadoop需要借助于cygwin xff0c 还需要开启ssh服务 xff0c 最近发现 xff0c 原来不需要借助cygwin
  • win7通过源码编译hadoop-2.7.0

    编译hadoop源代码 xff0c 意义在于当我们使用eclipse进行hadoop开发时 xff0c 可以直接在本地运行 xff0c 而无需打包成jar xff0c 然后再提交到hadoop服务器进行运行 当然 xff0c 这还需要一个可
  • win7源码编译hadoop-eclipse-plugin-2.7.0.jar

    当你厌烦了本地编码 xff0c 打包 xff0c 部署到远程服务器 xff0c 然后通过hadoop jar xxx jar wordcount input output的方式运行mapreduce程序 xff0c 那么可以考虑本地编译一个
  • windows下通过批处理脚本启动redis

    windows下redis启动 xff0c 需要进入redis安装目录 xff0c 然后shift 43 右键 xff0c 选择 在此处打开命令窗口 xff0c 然后输入redis server exe redis conf xff0c 就
  • KafkaOffsetMonitor-assembly-0.2.1.jar使用遇到的问题

    最近使用了一下最新版的kafka监控工具 xff0c 按照以前的方式运行 xff0c 能够打开首页 xff0c 但是首页什么内容也没有 xff0c 感觉像是出了什么幺蛾子 xff0c 浏览器右键打开开发者模式 xff0c 发现三个angul
  • springboot+jpa+mongodb开发实战

    mongodb作为nosql数据库的一种 xff0c 在javaee开发中也越来越受到重视 xff0c 这里介绍springboot 43 jpa 43 mongodb开发过程 1 新建maven工程 xff0c 引入springboot和