springboot04-mongodb
1.搭建mongodb服务
在https://www.mongodb.com/下载mongodb安装包,解压到本地
cmd中执行命令,启动本地mongodb:
cd D:\Program Files\mongodb-win32-x86_64-3.2.0\bin
mongod.exe --dbpath D:\mongodata\db --logpath D:\mongodata\log\mongodb.log
使用可视化管理软件mongoChef查看本地mongodb数据库
2.springboot项目的maven依赖中添加 spring-boot-starter-data-mongodb支持:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
3.application.properties中添加mongodb地址:
spring.data.mongodb.uri=mongodb://localhost:27017/test
4.新建实体bean类User:
package com.mlxs.springboot04.mongodb.bean; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; /** * User类描述: * * @author yangzhenlong * @since 2017/2/14 */ @Document(collection = "user") public class User { @Id private String id; private String name; private int sex = 0;//0 男,1 女 private String phone; private Date createTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } }
5.数据库操作类:
public interface UserDao extends MongoRepository<User, String> { User findByName(String name);//根据name查询 User findByNameAndPhone(String name, String phone); List<User> findAllBySexOrderByCreateTimeDesc(Integer sex);//根据性别查询,并根据创建时间倒序 }
附加mongodb keywords 地址:
http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
可以查找一下spring data jpa-mongo 的命名规范,如:
6.单元测试类:
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.mlxs.springboot04.mongodb.bean.User; import com.mlxs.springboot04.mongodb.dao.UserDao; import com.mlxs.springboot04.mongodb.web.MainApp; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.Date; import java.util.List; /** * UserDaoTest类描述: * * @author yangzhenlong * @since 2017/2/14 */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(MainApp.class) public class UserDaoTest { @Autowired private UserDao userDao; @Autowired private ObjectMapper objectMapper; @Test public void testAll() throws JsonProcessingException { this.add(); this.delete(); this.findByName(); this.findByNameAndPhone(); this.findAllBySexOrderByCreateTimeDesc(); } @Test public void add() throws JsonProcessingException { System.out.println("--------------添加-------------"); for(int i = 1; i <= 10; i++) { User user = new User(); user.setName("测试" + i); user.setSex((i%2 == 0) ? 0 : 1); user.setPhone("1511111000" + i); user.setCreateTime(new Date()); User save = userDao.save(user); System.out.println("保存结果:" + objectMapper.writeValueAsString(save)); } } @Test public void delete() throws JsonProcessingException { System.out.println("--------------删除-------------"); User user = userDao.findByName("测试6"); userDao.delete(user); List<User> users = userDao.findAll(); System.out.println("删除后的列表:" + objectMapper.writeValueAsString(users)); } @Test public void findByName() throws JsonProcessingException { System.out.println("--------------findByName-------------"); User user = userDao.findByName("测试1"); System.out.println("findByName:" + objectMapper.writeValueAsString(user)); } @Test public void findByNameAndPhone() throws JsonProcessingException { System.out.println("--------------findByNameAndPhone-------------"); User user = userDao.findByNameAndPhone("测试1", "15111110001"); System.out.println("findByNameAndPhone:" + objectMapper.writeValueAsString(user)); } @Test public void findAllBySexOrderByCreateTimeDesc() throws JsonProcessingException { System.out.println("--------------findAllBySexByCreateTimeDesc-------------"); List<User> userList = userDao.findAllBySexOrderByCreateTimeDesc(1); System.out.println("findAllBySexOrderByCreateTimeDesc:" + objectMapper.writeValueAsString(userList)); } }
#注意#:如果报Could not autowire field userRepository 类似的错误,则说明不能正确注入mongoRepository的子类,需要在springboot启动类中添加如下注解:
@SpringBootApplication @EnableMongoRepositories(basePackages = {"com.mlxs.springboot04.mongodb.dao"}) public class MainApp { public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } }
测试结果:
逃避不一定躲得过,面对不一定最难过