美文网首页SpringBoot学习Spring Boot 从入门到放弃MongoDB
【Spring MVC】Spring Boot 框架开发Web项

【Spring MVC】Spring Boot 框架开发Web项

作者: 开心跳蚤 | 来源:发表于2017-08-04 11:53 被阅读57次

    本系列文章主要索引如下:

    【Spring MVC】Spring Boot 框架开发Web项目之一 前期准备

    【Spring MVC】Spring Boot框架开发Web项目之二 Hello Spring Boot

    【Spring MVC】Spring Boot框架开发Web项目之三 第一个页面

    【Spring MVC】Spring Boot框架开发Web项目之四 将数据传递给视图

    【Spring MVC】Spring Boot框架开发Web项目之五 使用Webjars实现质感设计

    【Spring MVC】Spring Boot框架开发Web项目之六 表单数据提交

    【Spring MVC】Spring Boot框架开发Web项目之七 日期的使用和输出日志

    【Spring MVC】Spring Boot框架开发Web项目之八 表单校验

    【Spring MVC】Spring Boot 框架开发Web项目之九 Spring Boot项目的打包和部署

    【Spring MVC】Spring Boot 框架开发Web项目之十 整合MongoDB


    现在我们已经可以通过从后台传递数据到前端页面,而且也可以对应页面的输入域进行简单的校验并将数据提交都后台,现在我们来实现将提交到后台的数据,保存到数据库中,而我们将使用MongoDB数据库对数据进行保存。

    工具

    IntelliJ IDEA 16
    JDK 1.8
    Maven 3.5
    Tomcat 1.8
    MongoDB 3.4.5

    安装MongoDB

    暂略,后期补充


    项目源码下载地址:
    https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo


    引入相关依赖

    1、安装完了MongoDB,下面便开始将MongoDB整合到我们的项目中来,首先我们需要导入必须的依赖,在pom.xml文件中导入我们的Maven依赖

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-mongodb</artifactId>
           <version>1.5.2.RELEASE</version>
       </dependency>
    

    然后在application.properties文件中添加

    spring.data.mongodb.uri=mongodb://127.0.0.1:27017/spring
    

    标准的URL连接语法:

    mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
    

    mongodb:// 这是固定的格式,必须要指定。
    username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
    host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
    portX 可选的指定端口,如果不填,默认为27017
    /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。
    ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
    标准的连接格式包含了多个选项(options),如下所示:

    2、打开我们的实体类ProfileForm.java,添加一个字段 id(注意类型必须为String ,如果使用Integer,则会报错,因为在MongoDB中id字段是自动生成的一段字符串,而不是一个数字)

    package com.example.dto;
    
    
    import org.hibernate.validator.constraints.Email;
    import org.hibernate.validator.constraints.NotEmpty;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.mongodb.core.mapping.Document;
    
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    import java.time.LocalDate;
    
    @Document(collection = "profile")
    public class ProfileForm {
        @Id
        private String id;
    
        @Size(min = 2)
        private String twitterHandle;
    
        @Email
        @NotNull
        private String email;
    
        @NotNull
        private LocalDate birthDate;
    
        public ProfileForm() {
        }
    
        public ProfileForm(String id, String twitterHandle, String email, LocalDate birthDate) {
            this.id = id;
            this.twitterHandle = twitterHandle;
            this.email = email;
            this.birthDate = birthDate;
        }
    
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getTwitterHandle() {
            return twitterHandle;
        }
    
        public void setTwitterHandle(String twitterHandle) {
            this.twitterHandle = twitterHandle;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public LocalDate getBirthDate() {
            return birthDate;
        }
    
        public void setBirthDate(LocalDate birthDate) {
            this.birthDate = birthDate;
        }
    
        @Override
        public String toString() {
            return "ProfileForm{" +
                    "id=" + id +
                    ", twitterHandle='" + twitterHandle + '\'' +
                    ", email='" + email + '\'' +
                    ", birthDate=" + birthDate +
                    '}';
        }
    }
    

    @Id注释 : id属性是给mongodb用的,用@Id注解修饰
    @Document(collection = "profile") 声明数据库中对应的文档(表)

    3、 接下来编写一个操作mongodb的repository代码,它继承MongoRepository接口;MongoRepository接口包含了常用的CRUD操作,例如:save,insert,fillAll等。我们也可以定义我们自己的操作接口

    package com.example.Repository;
    import com.example.dto.ProfileForm;
    import org.springframework.data.mongodb.repository.MongoRepository;
    
    public interface  ProfileRepository extends MongoRepository<ProfileForm,String> {
        ProfileForm findByTwitterHandle(String twitterHandle);
    }
    
    

    如果使用自定义接口,如findByTwitterHandle()方法,这个并不是MongoRepository提供的方法,twitterHandle 为 ProfileForm 属性,由此可以看出,如果我们想要通过某个字段来查询数据,则方法名称的格式应该为 findBy+字段名(首字母大写)。

    4、接下来是访问控制类,在提交事件中添加保存的操作

     @Autowired
     private ProfileRepository profileRepository;
    
    @RequestMapping(value = "/profile" ,method = RequestMethod.POST)
        public String saveProfile(@Valid ProfileForm profileForm, BindingResult bindingResult){
            if(bindingResult.hasErrors()){
                return "profile/profilePage";
            }
           profileRepository.save(profileForm);
            System.out.println("Save Ok"+profileForm);
            return "redirect:profile";
        }
    

    5、下面开发访问我们的项目:http://127.0.0.1:8080/profile,并输入正确格式的数据(因为前面小结中,我们为输入域添加了校验),然后点击提交

    6、提交数据以后,查询MongoDB数据库,如果结果如下,则保存数据成功


    源码下载地址:
    https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo


    上一篇【Spring MVC】Spring Boot 框架开发Web项目之九 Spring Boot项目的打包和部署

    相关文章

      网友评论

        本文标题:【Spring MVC】Spring Boot 框架开发Web项

        本文链接:https://www.haomeiwen.com/subject/hhlvlxtx.html