zoukankan      html  css  js  c++  java
  • 吴裕雄天生自然Spring BootSpring Boot整合MongoDB

        1.Spring对MongoDB的支持
        Spring对MongoDB的支持主要是通过Spring Data MongoDB实现的,Spring Data MongoDB为我们提供了如下功能。
        1)对象/文档映射注解
    
        2)MongoTemplate
        与JdbcTemplate一样,Spring Data MongoDB也我们提供了一个MongoTemplate,而MongoTemplate为我们提供了数据访问的方法。
        3)Repository 
        类似于Spring Data JPA,Spring Data MongoDB也我们提供了Repository的支持,使用方式和Spring Data JPA一样,示例如下:
    public interface PersonRepository extends MongoRepository<Person, String>{
    }
        Spring Boot对MongoDB的自动配置位于org.springframework.boot.autoconfigure.mongo包中。主要配置了数据库连接、MongoTemplate,我们可以在配置文件中使用以“spring.data.mongodb”为前缀的属性来配置MongoDB的相关信息。Spring Boot对MongoDB提供了一些默认属性,如默认端口号为27017、默认服务器为localhost、默认数据库为test、默认无用户名和无密码访问方式,并默认开启了对Repository的支持。因此,我们在Spring Boot应用中,只需引入spring-boot-starter-data-mongodb依赖即可按照默认配置操作MongoDB数据库。
    在Spring Boot应用中,对MongoDB数据库的增删改查。
    1.创建基于spring-boot-starter-data-mongodb依赖的Spring Boot Web应用ch6_8
    2.配置application.properties文件
    3.创建领域模型
    4.创建数据访问接口
    5.创建控制器层
    6.运行
    server.servlet.context-path=/ch6_8
    spring.jackson.serialization.indent-output=true 
    <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.mongo</groupId>
        <artifactId>SpringbootMongodb</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <!-- 声明项目配置依赖编码格式为 utf-8 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <fastjson.version>1.2.24</fastjson.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-mongodb</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    package com.ch.ch6_8.domain;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.data.annotation.Id;
    import org.springframework.data.mongodb.core.mapping.Document;
    import org.springframework.data.mongodb.core.mapping.Field;
    
    @Document
    public class Person {
        @Id
        private String pid;
        private String pname;
        private Integer page;
        private String psex;
        @Field("plocs")
        private List<Location> locations = new ArrayList<Location>();
    
        public Person() {
            super();
        }
    
        public Person(String pname, Integer page, String psex) {
            super();
            this.pname = pname;
            this.page = page;
            this.psex = psex;
        }
    
        public String getPid() {
            return pid;
        }
    
        public void setPid(String pid) {
            this.pid = pid;
        }
    
        public String getPname() {
            return pname;
        }
    
        public void setPname(String pname) {
            this.pname = pname;
        }
    
        public Integer getPage() {
            return page;
        }
    
        public void setPage(Integer page) {
            this.page = page;
        }
    
        public String getPsex() {
            return psex;
        }
    
        public void setPsex(String psex) {
            this.psex = psex;
        }
    
        public List<Location> getLocations() {
            return locations;
        }
    
        public void setLocations(List<Location> locations) {
            this.locations = locations;
        }
    }
    package com.ch.ch6_8.domain;
    
    public class Location {
        private String locName;
        private String year;
    
        public Location() {
            super();
        }
    
        public Location(String locName, String year) {
            super();
            this.locName = locName;
            this.year = year;
        }
    
        public String getLocName() {
            return locName;
        }
    
        public void setLocName(String locName) {
            this.locName = locName;
        }
    
        public String getYear() {
            return year;
        }
    
        public void setYear(String year) {
            this.year = year;
        }
    }
    package com.ch.ch6_8.repository;
    
    import java.util.List;
    import org.springframework.data.mongodb.repository.MongoRepository;
    import org.springframework.data.mongodb.repository.Query;
    import com.ch.ch6_8.domain.Person;
    
    public interface PersonRepository extends MongoRepository<Person, String> {
        Person findByPname(String pname);// 支持方法名查询
    
        @Query("{'psex':?0}") // JSON字符串
        List<Person> selectPersonsByPsex(String psex);
    }
    package com.ch.ch6_8.controller;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import com.ch.ch6_8.domain.Location;
    import com.ch.ch6_8.domain.Person;
    import com.ch.ch6_8.repository.PersonRepository;
    
    @RestController
    public class TestMongoDBController {
        @Autowired
        private PersonRepository personRepository;
    
        @RequestMapping("/save")
        public List<Person> save() {
            List<Location> locations1 = new ArrayList<Location>();
            Location loc1 = new Location("北京", "2019");
            Location loc2 = new Location("上海", "2018");
            locations1.add(loc1);
            locations1.add(loc2);
    
            List<Location> locations2 = new ArrayList<Location>();
            Location loc3 = new Location("广州", "2017");
            Location loc4 = new Location("深圳", "2016");
            locations2.add(loc3);
            locations2.add(loc4);
    
            List<Person> persons = new ArrayList<Person>();
            Person p1 = new Person("陈恒1", 88, "男");
            p1.setLocations(locations1);
            Person p2 = new Person("陈恒2", 99, "女");
            p2.setLocations(locations2);
            persons.add(p1);
            persons.add(p2);
    
            return personRepository.saveAll(persons);
        }
    
        @RequestMapping("/findByPname")
        public Person findByPname(String pname) {
            return personRepository.findByPname(pname);
        }
    
        @RequestMapping("/selectPersonsByPsex")
        public List<Person> selectPersonsByPsex(String psex) {
            return personRepository.selectPersonsByPsex(psex);
        }
    
        @RequestMapping("/updatePerson")
        public Person updatePerson(String oldPname, String newPname) {
            Person p1 = personRepository.findByPname(oldPname);
            if (p1 != null)
                p1.setPname(newPname);
            return personRepository.save(p1);
        }
    
        @RequestMapping("/deletePerson")
        public void updatePerson(String pname) {
            Person p1 = personRepository.findByPname(pname);
            personRepository.delete(p1);
        }
    }
    package com.ch.ch6_8;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Ch68Application {
        public static void main(String[] args) {
            SpringApplication.run(Ch68Application.class, args);
        }
    }

  • 相关阅读:
    SQL Server 数据类型映射 (ADO.NET)
    微软SQLHelper.cs类 中文版
    在WinForm中使用Web Service来实现软件自动升级
    Winform开发框架之通用自动更新模块(转)
    C# winform 最小化到电脑右下角
    3层数据访问架构(部分)
    Castle ActiveRecord学习实践
    .Net下的 ORM框架介紹
    配置企业库5.0管理
    一个简洁通用的调用DLL函数的帮助类
  • 原文地址:https://www.cnblogs.com/tszr/p/15363181.html
Copyright © 2011-2022 走看看