前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot整合Spring Data Mongodb

SpringBoot整合Spring Data Mongodb

作者头像
爱撒谎的男孩
发布2019-12-31 15:44:57
1.7K0
发布2019-12-31 15:44:57
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

1. SpringBoot整合Spring Data Mongodb

1.1. 简介

1.2. 何时使用

1.3. 安装

1.4. 概念解析

1.5. 使用

1.6. 分页查询

1.7. 常用的查询关键字

1.8. 事务

1.9. 源码

SpringBoot整合Spring Data Mongodb

简介

  • MongoDB是一款面向文档的数据库,类似json(Bson)的数据存储格式

何时使用

  • 数据量大
  • 数据价值较低

安装

  • docker pull mongo
  • docker run --name mymongo -p 27017:27017 -d mongo

概念解析

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

使用

  • 添加依赖:
代码语言:javascript
复制
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  • 配置如下:
代码语言:javascript
复制
spring:
  application:
    name: mongodb-server
  data:
    mongodb:
      host: ******  # 主机地址
      port: 27017           # 端口
      database: test        # 数据库
server:
  port: 9003
  • 新建User实体类,存储在MongonDB中,如下:
代码语言:javascript
复制
@Data
@Accessors(chain=true)  //链式调用
@Document(collection="user")   //指定集合
public class User implements Serializable {
	@Id
	private Integer _id;
	private String name;
	private String mobile;
	private Date birthday;
}
  • 定义一个UserRepository继承MongoRepository
代码语言:javascript
复制
/**
 * 	用户的dao层的接口,实现MongoRepository
 * 	第一个泛型指定的是实体类,第二个指定的是主键Id的类型
 */
public interface UserRepository extends MongoRepository<User, Integer>{
}
  • 在service使用如下:
代码语言:javascript
复制
@Service
@Transactional   //开启事务
public class UserServiceImpl {
	@Resource
	private UserRepository userRepository;  //注入
	
	/**
	 * 	添加用户
	 * @return
	 */
	public User addUser(User user){
		User user2 = userRepository.save(user);
		System.out.println(1/0);
		return user2;
	}

	/**
	 * 	批量添加
	 * @param users
	 * @return
	 */
	public List<User> addUserBatch(List<User> users){
		List<User> user2 = userRepository.saveAll(users);
		return user2;
	}
	
	/**
	 * 	根据Id删除
	 * @param id
	 */
	public void deleteById(Integer id) {
		userRepository.deleteById(id);
	}
	
	/**
	 * 	更新数据,使用的还是save方法,相当于覆盖
	 * @param user
	 * @return
	 */
	public User  update(User user) {
		User user2 = userRepository.save(user);
		return user2;
	}
	
	/**
	 * 根据Id获取信息
	 * @param id
	 * @return
	 */
	public User findById(Integer id) {
		return userRepository.findById(id).get();
	}
	
	/**
	 * 	查询全部
	 * @return
	 */
	public List<User> findAll(){
		return userRepository.findAll();
	}
	
	
	/**
	 * 	分页查询信息
	 * @param pageSize
	 * @param pageNum
	 * @return
	 */
	public List<User> findUserList(Integer pageNum,Integer pageSize){
		Pageable pageable=new PageRequest(pageNum-1,pageSize);
		Page<User> pages = userRepository.findAll(pageable);
		if (pages.hasContent()) {
			return pages.getContent();
		}
		return null;
	}
}

分页查询

  • dao层
代码语言:javascript
复制
import java.util.List;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.techwells.study.domain.DynamicComment;

public interface DynamicCommentRepository extends MongoRepository<DynamicComment, Integer>{
	/**
	 *  分页查询,先根据nickName筛选出结果,之后分页
	 * @param nickName  昵称
	 * @param pageable  分页
	 * @return
	 */
	List<DynamicComment> findByNickName(String nickName,Pageable pageable);
}
  • 测试如下:
代码语言:javascript
复制
@Test
	public void test4() {
		
		//构建分页信息
		Pageable pageable=new PageRequest(0, 2, Sort.Direction.DESC,"id");
		
		List<DynamicComment> comments = dynamicRepository.findByNickName("爱撒谎的男孩",pageable);
		for (DynamicComment dynamicComment : comments) {
			System.out.println(dynamicComment);
		}
		
	}

常用的查询关键字

事务

  • 未完待续………………..

源码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot整合Spring Data Mongodb
    • 简介
      • 何时使用
        • 安装
          • 概念解析
            • 使用
              • 分页查询
                • 常用的查询关键字
                  • 事务
                    • 源码
                    相关产品与服务
                    容器镜像服务
                    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档