Spring boot 项目(十九)——集成MongoDB+JPA,完成表操作
最新的、完整的、简单的springboot集成mongodb+jpa的小demo
·
MongoDB介绍
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON
对象。字段值可以包含其他文档,数组及文档数组。
项目结构
具体配置
1、pom文件
<dependencies>
<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.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
2、yml配置文件
spring:
data:
mongodb:
uri: mongodb://146.56.248.207:27017/mongo
3、实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
* mongodb实体类
* @author 流星
*/
@Data
@AllArgsConstructor
public class User {
@Id
private Long id;
private String name;
private String remark;
}
4、mapper类
import com.mongo1.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
/**
* 类似mybatis-plus,实现快捷数据操作
* 这个接口里面的方法都是自定义的
* 使用的时候直接在service层调用方法就可以了
* @author 流星
*/
@Repository
public interface MongoDBMapper extends MongoRepository<User,Long> {
/**
* 根据name差信息
*/
User findByName(String name);
/**
* 根据remark差信息
*/
User findByRemark(String remark);
}
5、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.MongoDatabaseFactory;
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;
/**
* 去掉mongodb中collection的_class属性
* @author 流星
*/
@Configuration
public class MongoMappingConfig {
@Bean
public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory 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;
}
}
6、controller层
import com.mongo1.entity.User;
import com.mongo1.service.MongoDBService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* description controller层,测试类
*
* @author 流星
* @date 2022/4/26 16:38
*/
@RestController
@RequestMapping
public class MainController {
@Resource
private MongoDBService mongoDBService;
@RequestMapping("insert")
public String insertUser(User user){
mongoDBService.insertUser(user);
return "success";
}
@RequestMapping("findByName")
public Object findByName(String name){
return mongoDBService.findByName(name);
}
}
7、service接口
public interface MongoDBService{
/**
* 插入数据
*/
void insertUser(User user);
/**
* 根据name查信息
*/
Object findByName(String name);
}
8、service实现层
import com.mongo1.entity.User;
import com.mongo1.mapper.MongoDBMapper;
import com.mongo1.service.MongoDBService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* description service层
*
* @author 流星
* @date 2022/4/26 22:08
*/
@Slf4j
@Service
public class MongoDBServiceImpl implements MongoDBService {
@Resource
private MongoDBMapper mongoDBMapper;
@Override
public void insertUser(User user) {
mongoDBMapper.save(user);
}
@Override
public Object findByName(String name) {
return mongoDBMapper.findByName(name);
}
}
测试结果
更多推荐
已为社区贡献4条内容
所有评论(0)