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);
}
}
测试结果:
springboot04-mongodb的更多相关文章
- springboot使用jpa+mongodb时,xxxRepository不能Autowired的问题
springboot启动类: @SpringBootApplication public class MainApp { public static void main(String[] args) ...
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
随机推荐
- [JLOI2014]聪明的燕姿(搜索)
城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...
- 20165223《Java程序设计》第七周Java学习总结
教材学习内容总结 第11章-JDBC与MySQL数据库 要点 MySQL数据库管理系统 连接MySQL数据库 查询操作(基础) 更新.添加.删除(基础) 预处理语句(重点) 通用查询(难点) 事务 笔 ...
- Oracle数据库中遇到的坑
最近在帮别人忙写程序,用的是Oracle数据库,写一篇文章来说说在Oracle中遇到的一些坑: 1. PL/SQL develop的坑: 由于在这里工作环境是内网完全,无奈只能使用PL/SQL 工具, ...
- 用foobar进行码率转换 适用与sacd-r转成低码率
之前下载了不少高清音频,有黑胶转录的也有母带文件.这些高清音频大都是24bit,采样率96khz或者88.2khz或者更高.而我想将部分精品专辑刻录成cd.首先我需要将这些文件转换为16bit,44. ...
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- IT项目管理分享7个开源项目管理工具
在一项调查中,有 71% 的组织表示他们在开发过程中会用到敏捷方法. 此外,用敏捷方法管理项目比传统方法管理项目成功率高 28%.在这次工具推荐中,我们从一些比较受欢迎的开源项目管理工具中摘取了支持敏 ...
- 斯坦福大学公开课机器学习: advice for applying machine learning - evaluatin a phpothesis(怎么评估学习算法得到的假设以及如何防止过拟合或欠拟合)
怎样评价我们的学习算法得到的假设以及如何防止过拟合和欠拟合的问题. 当我们确定学习算法的参数时,我们考虑的是选择参数来使训练误差最小化.有人认为,得到一个很小的训练误差一定是一件好事.但其实,仅仅是因 ...
- nohup报错
1 这是脚本编码的问题 解决办法: (1)用vi打开对应的脚本 (2)在命令行下(:set ff?),看一下当前文档的编码格式 ,有两种情况 fileformat=unix和fileformat=do ...
- 做错的题目——给Array附加属性
- RS485 / RS422
RS422可以变为RS485:A和Y短路(然后接T/R+),B和Z短路(然后接T/R-) RS485是半双工,只有两根线通信线,要么接收状态,要么发送状态 RE为低电平,作为接收器 DE为高电平,作为 ...