SpringBoot系列基础入门与MongoDB实现增删改查

相信你还在为SSM框架繁琐的搭建过程而苦恼,还在为复杂的配置文件而忧心,现在SpringBoot终于来了,它化繁为简,让开发变得极其简单而快速,短短几年时间已经成为了开发的主流框架。作为一个与时俱进的程序员,当然要把握时代的潮流,因此将从这篇文章开始,由基础到进阶,开始对springboot进行一个全面的分析。

一、什么是Springboot

其实Springboot是Spring家族中的一个全新的框架,它是用来简单应用程序的创建和开发过程,化繁为简,简化SSM框架的配置。比如说在使用SSM框架开发的时候,我们需要配置web.xml,配置spring,配置mybatis,并将它们整合到一起,而是用Springboot就不同了,它采用了大量的默认配置来简化这些文件的配置过程。我们在百度指数看看这几年springboot和SSM框架的搜索指数:

在2017年下半年,spingboot就是出于一个喷发的状态,因此学习springboot是多么的有必要。

说实话在学习springboot的时候千万不要把他想象的太麻烦,因为它确实太简单,而且也不是什么全新框架,只是把很多其他的框架整合了进来,不需要自己去配置而已。有了这个概念,你就可以带着轻松的心情去学习了。

二、springboot的特点

其实上面已经对其特点进行了一个总结,那就是简化程序搭建过程和开发过程,现在对其细说一下:

(1)可以不使用xml配置文件,全部采用注解的方式开发

(2)能快速构建spring的web程序

(3)可以使用内嵌的Tomcat、jetty等服务器去运行SpringBoot程序

(4)使用maven来配置依赖

(5)可以对程序进行健康检查

(6)等等

既然Springboot这么厉害,我相信你已经迫不及待的想要去看看它到底长什么样了吧,下面我们在我们的开发工具IDEA中创建一个springBoot项目,如果你使用的是eclipse,那么你需要去安装一个spring Tool suite插件就好了

三、创建一个springBoot项目

当然在创建项目之前,我们要先做一些预备工作,开发工具使用IDEA,要提前掌握maven的知识,java版本推荐是8,springboot的版本使用最新的就好了。

由于IDEA工具中封装了Springboot,因此我们可以直接拿来创建,创建的过程我使用了一张gif图来演示一下。如果看不懂配合着图下面的解释多看几遍,自己动一下手基本上就能搞定。

上面的动图已经很详细了,为了你看着混乱,我们再去梳理一下:

第一步:选择 File -> New —> Project

第二步:选择 Spring Initializr—>Next 会出现Idea 帮我们集成好的配置界面,我们在这一步选中java版本、语言等配置信息,接着点击最下面的next。

第三步:Dependencies界面—>web—>选择SpringWebStarter—>finish即可

上面点击finish之后,idea会自动下载和配置,等一会就创建项目成功了,下面我们介绍一下创建好的项目结构:

从上往下我们挨个分析:

(1)Spring Boot 的基础结构共三个文件夹:

src/main/java:程序开发文件夹,我们的在这里写程序代码。

src/main/resources:配置文件

src/test/java:测试程序

(2)src/main/java下的DemoApplication.java

主要作用就是主程序的入口,相当于main函数。

(3)src/main/resources下的static

里面保存了一些配置资源,比如图片等等。

(4)src/main/resources下的application.proties

它是全局配置文件,在这里定义一些接口的端口号等等各种信息。

(5)pom文件

这个文件极其重要,他定义了一些项目的依赖信息,

(6)mvnw和mvnw.cmd

一个是在linux下的shell执行脚本,一个定义了在windows下的bat执行脚本。

(7)其他的不重要我们这里就不说了

到目前为止我们已经能够创建一个项目了,也知道了项目的基本结构,现在我们就来演示一个案例看一下SpringBoot开的便捷性,同时也给出一些必要文件的信息。

四、第一个SpringBoot案例

1、简单小例子

第一步:我们在src/main/java文件夹下建立Controller包,新建HelloWorld类

@RestController

public class HelloWorld {

@RequestMapping("/hello")

public String hello(){

return "Hello World!";

}

}

第二步:点击DemoApplication文件运行

第三步:在浏览器中直接访问

就是这么简单。当我们创建一个web项目之后,写一下controller的短短几行代码,就能直接访问,没有了ssm框架那种繁琐的配置过程了,现在你应该能体验到springboot的快捷性了吧。不过学习知识就是要深入进去。现在我们来分析一下springboot项目的流程。

2、分析小例子

(1)项目入口DemoApplication

首先我们先从项目的入口类DemoApplication说起,它是整个项目的入口,相当于main函数。

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

在这个类中我们可以看到最上面有一个@SpringBootApplication注解,它就相当于是一个入口的标志。应用程序启动之后看到这个注解就知道这是一个SpringBoot项目

(2)pom.xml文件

如果你是新手,你暂且可以这样理解(其实不是),项目启动demoApplication入口之后,就检查是否包含了必要的依赖。我们给出最核心的一段:

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

也就是说我们在pom文件中的dependencies结构下,添加我们所需要的依赖就可以了。

(3)application.properties文件

在上面添加完依赖之后,我们可以在这个文件添加一些配置,比如说我们的8080端口被占用,那么我们修改项目的端口是8888,或者是项目的根目录我们更改成test。

server.port=8888

server.servlet.context-path=/test

我们再去去访问上面的controller的时候就会发生变化了

(4)controller、service等文件

对于我们具体的业务逻辑,我们只需要在相应的文件编码就可以和SSM框架一样。

OK,这就是SpringBoot,用起来超级简单。对于SpringBoot和其他框架的整合文章也将陆续推出,如有问题还请批评指正。

自己本科时候一直使用的是Mysql,目前的课题组使用的是MongoDB,因此就花了一部分时间整理了一下,实现springboot与MongoDB的整合,并且实现基本的增删改查操作,从头到尾给出一个完整的案例。

一、环境配置

对于环境配置我是用了一张表来展示,版本之间差异不大,你可以基于其他版本进行测试。

名称版本Idea2018专业版(已破解)

Maven4.0.0SpringBoot2.1.3MongoDB4.0.4Robo3T(可视化工具)1.2jdk1.8

二、代码整合

我们在这里举的例子是对用户类user的增删改查操作。现在我们先看一下现在的项目结构:

下面我们就来看一下具体实现步骤。

第一步:在pom中添加依赖

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-data-mongodborg.springframework.bootspring-boot-devtoolstruetruecom.alibabafastjson1.2.38org.springframework.bootspring-boot-starter-freemarkerorg.springframework.bootspring-boot-starter-testtest

第二步:在pom中启动热部署

org.springframework.bootspring-boot-maven-plugintrue

第三步:在application.properties文件中添加全局配置信息

##项目配置server.port=8888server.servlet.context-path=/mongotest##mongodb相关配置spring.data.mongodb.database=testspring.data.mongodb.host=127.0.0.1spring.data.mongodb.port=27017

第四步:新建bean包并创建User类

publicclassUser{privateintid;privateString name;privateString password;//getter和setter方法}

第五步:新建dao包并创建UserRepository接口

publicinterfaceUserRepositoryextendsMongoRepository{//查询操作,自己定义实现 User getByName(String name); User getByNameLike(String name);}

注意:getByName中的name要和User中的name名字一样,比如这里就不能写成getByUserName,因为匹配的是userName和User中的字段name不同,运行的时候就会出错。

第六步:新建service包并创建UserService接口

publicinterfaceUserService{//增删改查接口 public void saveUser(User user); public void removeUserByUserName(String name); public void updateUser(User user); public User getByUserName(String name); public User getByUserNameLike(String name);}

第七步:在service包创建UserServiceImpl类

@Service//这个标志不要忘记了public class UserServiceImpl implements UserService {//由于我们添加了依赖,可以使用注解直接注入 @Resource private MongoTemplate mongoTemplate; @Resource private UserRepository userRepository;//保存用户 @Override public void saveUser(User user) { userRepository.save(user); } //通过用户名字删除 @Override public void removeUserByUserName(String name) { Query query=new Query(new Criteria("name").is(name)); mongoTemplate.remove(query,User.class); } //通过用户id来更新名字 @Override public void updateUser(User user) { Queryq=new Query(new Criteria("id").is(user.getId())); Update update=new Update().set("name", user.getName()); mongoTemplate.updateMulti(q, update, User.class); } //通过用户名查询 @Override public User getByUserName(String name) {returnuserRepository.getByName(name); } //通过相似用户名查询 @Override public User getByUserNameLike(String name) {returnuserRepository.getByNameLike(name); }}

在这里你可能有一些疑问,一会使用mongoTemplate,一会又使用userRepository,在每一种情况下到底用哪个,在这里我们就给出一个对比,

(1)使用MongoRepository

使用Repository已经提供了基本的增删改查功能。

对于查询操作:你不用写相关的查询组合语句,它会内部为我们实现这样的一个类。你只需要按照相关规则就好。

对于增加操作:要有主键才可以,并且不能是date日期类型的。

但是他的缺点是不够灵活,这时候就可以使用MongoTemplate了。

(2)使用MongoTemplate

Spring Data给我们提供了MongoTemplate类,是非常强大的,里面提供了大量的操作数据库的方法,而且是线程安全的。可是它的很多方法都涉及到了Class,和CollectionName。针对不同的实体类,我们需要重复写不同的方法。

第八步:创建controller包并创建Usercontroller类

@RestControllerpublic class UserController {//注入service @Resource private UserService userService;//多增加几个用户 @RequestMapping("/save") @ResponseBody public String saveUser() {for(inti=0;i<3;i++){ User user=new User(); user.setId(i); user.setName("fdd"+i); user.setPassword("12345"+i); userService.saveUser(user); }return"插入用户成功"; } //删除fdd0@RequestMapping("/remove") @ResponseBody public String removeUserByUserName() { userService.removeUserByUserName("fdd0");return"删除用户成功"; } //把1号名字改一下 @RequestMapping("/update") @ResponseBody public String updateUser() { User user=new User(); user.setId(1); user.setName("java的架构师技术栈"); user.setPassword("123456"); userService.updateUser(user);return"更新用户信息成功"; } //通过名字查询 @RequestMapping("/getUserByName") @ResponseBody public User getUserByName() { User user=userService.getByUserName("fdd2");returnuser; } //通过相似名字查询 @RequestMapping("/getUserByNameLike") @ResponseBody public User getUserByNameLike() { User user=userService.getByUserNameLike("fdd");returnuser; }}

到目前为止我们代码就实现完了。

最后一步,那就是测试:

我们可以在浏览器输入不同的路径测试。当然roto3T也有我们的插入的结果,其他的自己测试一下就好:

OK,这就是整合的整个过程,在这里其实也只是给出一个基础案例,希望对你有帮助。

觉得文章不错的小伙伴,可以点赞,收藏,好好学习哈~

你可能感兴趣的:(SpringBoot系列基础入门与MongoDB实现增删改查)