Spring-Boot 集成 MongoDB 3.4 实现简单对象存储与查询

 

打开地址:http://mvnrepository.com/

 

搜索spring-boot依赖的mongodb的包

 

 

 

 

点进去

 

 

 

以上教大家如何根据一项技术,去搜索其在Spring-Boot项目中对应的依赖

 

 

一、项目目录结构图

 

 

 

 

怎么简洁怎么来,Controller就不写了,Service也不写了,所有测试全在TestSql单元测试类中实现

 

 

 

二、Pom.xml

 

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.appleyk</groupId>
  <artifactId>spring-boot-mongodb</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <description>spring-boot 集成mongodb,实现简单的对象存储和查询</description>
	<!-- 继承官网最新父POM【假设当前项目不再继承其他POM】 -->
	<!-- http://projects.spring.io/spring-boot/#quick-start -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
	</parent>
	<!-- 使用Java8,嘗試使用新特新【stream和lambda】 -->
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<!-- Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合 -->
		<!-- 该Starters包含很多你搭建项目, 快速运行所需的依赖, 并提供一致的, 管理的传递依赖集。 -->
		<!-- 大多数的web应用都使用spring-boot-starter-web模块进行快速搭建和运行。 -->
		<!-- spring-boot-starter-web -->
		<!-- 对全栈web开发的支持, 包括Tomcat和 spring-webmvc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency><!-- 添加Mybatis、Spring-Mybatis依赖 -->	
		<!-- Spring 单元测试 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- JUnit单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<!-- 添加热部署 devtools:监听文件变动 -->
		<!-- 当Java文件改动时,Spring-boo会快速重新启动 -->
		<!-- 最简单的测试,就是随便找一个文件Ctrl+S一下,就可以看到效果 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<!-- optional=true,依赖不会传递 -->
			<!-- 本项目依赖devtools;若依赖本项目的其他项目想要使用devtools,需要重新引入 -->
			<optional>true</optional>
		</dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>
	</dependencies>
</project>

 

 

 

 

 

 

三、application.properties

 

 

server.port=8088
server.session.timeout=10
server.tomcat.uri-encoding=utf8


#在application.properties文件中引入日志配置文件
#=====================================  log  =============================
logging.config=classpath:logback-boot.xml

spring.data.mongodb.uri= mongodb://localhost:27017/test

 

 

 

 

 

 

 

 

cmd窗口运行mongo命令,连接MongoDB,并切换test数据库

 

 

 

 

 

 

 

四、日志配置文件

 

 

logback-boot.xml

 

<configuration>    
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->    
    <!-- appender是configuration的子节点,是负责写日志的组件。 -->
    <!-- ConsoleAppender:把日志输出到控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">    
        <encoder>    
            <pattern>%d %p (%file:%line\)- %m%n</pattern>  
            <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
            <charset>UTF-8</charset>   
        </encoder>    
    </appender>    
    <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
    <!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log -->
    <!--             2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名-->
    <appender name="syslog"    
        class="ch.qos.logback.core.rolling.RollingFileAppender">    
        <!-- <File>log/sys.log</File>  --> 
        <File>opt/spring-boot-web/logs/sys.log</File>
        <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
        <!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">    
            <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
            <!-- 文件名:log/sys.2017-12-05.0.log -->
            <fileNamePattern>log/sys.%d.%i.log</fileNamePattern> 
            <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> 
            <maxHistory>30</maxHistory>   
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">    
                <!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为1KB,只是为了演示 -->  
                <maxFileSize>10MB</maxFileSize>    
            </timeBasedFileNamingAndTriggeringPolicy>    
        </rollingPolicy>    
        <encoder>    
            <!-- pattern节点,用来设置日志的输入格式 -->
            <pattern>    
                %d %p (%file:%line\)- %m%n  
            </pattern>    
            <!-- 记录日志的编码 -->
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->   
        </encoder>    
    </appender>    
    
    <!-- 控制台输出日志级别 -->
    <root  level="error">
          <appender-ref ref="STDOUT" />
     </root> 
    <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
    <!-- com.appley为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
    <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  --> 
     <logger name="com.appleyk" level="error">    
        <appender-ref ref="syslog" />    
    </logger> 
   
</configuration>  

 

 

 

 

 

五、Spring-Boot启动入口

 

 

Application.java

 

package com.appleyk;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration  @ComponentScan
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

 

 

 

 

 

六、建立User实体(相当于MongoDB中的user表的映射)

 

 

 

 

user.java

 

package com.appleyk.entity;

import org.springframework.data.annotation.Id;

public class User {

	@Id
	private Long id;
	private String name;
	private int age;
	private String sex;

	
	public User(Long id,String name,int age,String sex){
		this.id = id;
		this.name = name ;
		this.age  = age  ;
		this.sex  = sex  ;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
}

 

 

 

 

七、建立UserRepository

 

 

 

 

UserRepository.java

 

package com.appleyk.repository;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;

import com.appleyk.entity.User;

public interface UserRepository extends MongoRepository<User, Long>{

	
	/*
	 * MongoRepository与HibernateTemplete相似,提供一些基本的方法,
	 * 实现的方法有findone(),save(),count(),findAll(),findAll(Pageable),delete(),deleteAll()..etc
	 * 要使用Repository的功能,先继承MongoRepository<T, TD>接口
	 * 其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。
	 * 之后在spring-boot中注入该接口就可以使用,无需实现里面的方法,spring会根据定义的规则自动生成。
	 * starter-data-mongodb 支持方法命名约定查询 findBy{User的name属性名},
	 * findBy后面的属性名一定要在User类中存在,否则会报错 
	 */
	
	/**
	 * 根据name查询User实体集合
	 * @param name
	 * @return
	 */
	List<User> findByName(String name1);
}

 

 

 

 

八、单元测试

 

 

 

 

TestSql.java

 

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.appleyk.Application;
import com.appleyk.entity.User;
import com.appleyk.repository.UserRepository;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=Application.class)// 指定spring-boot的启动类 
public class TestSql {

	
	@Autowired
	private UserRepository userRepository;
	
	/**
	 * 插入一条记录
	 */
	@Test
	public void TestSave(){	
		userRepository.insert(new User(1001L,"appleyk",27,"男"));
		System.err.println("保存成功!");
	}
	
	/**
	 * 查询全部User实体
	 */
	@Test
	public void TestFindAll(){	
		List<User> users = userRepository.findAll();
		System.err.println("size: "+users.size()+","+users.get(0).getName());
	}
	
	
	/**
	 * 根据name查询User
	 */
	@Test
	public void TestFindByName(){	
		List<User> users = userRepository.findByName("appleyk");
		System.err.println("size: "+users.size());
	}
	
	/**
	 * 根据id删除对应User实体
	 */
	@Test
	public void TestDelete(){
		userRepository.delete(1001L);
		System.err.println("删除成功!");
	}
}

 

 

 

 

 

mongo连接查询

 

 

 

GitHub项目地址:Spring-Boot 集成mongodb,实现简单的对象存储和查询


 
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读