实现MongoDB和Spring整合可以分为以下几个步骤:
- 添加Maven依赖:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
这个依赖包可以让我们更方便地操作MongoDB。
- 配置MongoDB连接:
@Configuration
public class AppConfig {
@Value("${mongodb.host}")
private String host;
@Value("${mongodb.port}")
private int port;
@Value("${mongodb.database}")
private String database;
@Bean
public MongoClient mongo() {
return new MongoClient(host, port);
}
@Bean
public MongoTemplate mongoTemplate() {
return new MongoTemplate(mongo(), database);
}
}
在配置类中,我们使用@Value
注解来读取配置文件中的MongoDB连接信息。然后定义了一个MongoClient
和一个MongoTemplate
的Bean。
- 创建实体类:
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
private Integer age;
// getters and setters
}
使用@Document
注解指定集合名称,使用@Id
注解标记主键。
- 创建DAO层接口和实现:
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void save(User user) {
mongoTemplate.save(user);
}
@Override
public List<User> findAll() {
return mongoTemplate.findAll(User.class);
}
@Override
public User findById(String id) {
Query query = new Query(Criteria.where("id").is(id));
return mongoTemplate.findOne(query, User.class);
}
@Override
public void update(User user) {
Query query = new Query(Criteria.where("id").is(user.getId()));
Update update = new Update()
.set("name", user.getName())
.set("age", user.getAge());
mongoTemplate.updateFirst(query, update, User.class);
}
@Override
public void delete(String id) {
Query query = new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query, User.class);
}
}
使用@Repository
注解标记为DAO层实现类,使用@Autowired
注解注入MongoTemplate
。定义了CRUD方法。
- 配置Spring MVC:
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}
使用@Configuration
注解标记为配置类,使用@EnableWebMvc
开启Spring MVC支持。定义了一个index
视图的路由。
- 编写Controller:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping
public List<User> findAll() {
return userDao.findAll();
}
@GetMapping("/{id}")
public User findById(@PathVariable String id) {
return userDao.findById(id);
}
@PostMapping
public void save(@RequestBody User user) {
userDao.save(user);
}
@PutMapping
public void update(@RequestBody User user) {
userDao.update(user);
}
@DeleteMapping("/{id}")
public void delete(@PathVariable String id) {
userDao.delete(id);
}
}
使用@RestController
注解声明为一个控制器,使用@Autowired
注解注入UserDao
。定义了获取全部用户、根据ID获取用户、保存用户、修改用户、删除用户的REST API接口。
- 编写配置文件:
mongodb.host=localhost
mongodb.port=27017
mongodb.database=test
在application.properties
中配置MongoDB连接信息。
- 示例说明
示例1:保存用户
请求URL:POST /users
请求体:
{
"name": "Tony",
"age": 28
}
响应:成功保存后,无返回内容,状态码为201。
示例2:根据ID获取用户
请求URL:GET /users/5f1516bd6cfb6260b347911a
响应:
{
"id": "5f1516bd6cfb6260b347911a",
"name": "Tony",
"age": 28
}
注意:该示例使用的ID是示例数据,请根据实际情况替换为正确的ID。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MongoDB和Spring整合的实例代码 - Python技术站