1.在这之前应该安装好了idea和MongoDB 并且idea安装过Maven吧
我的MongoDB没有账户密码
2.打开idea创建springboot项目
自己起名字 随便 详细解释再搜搜昂
最简单的 这一步直选web的这一个创建 然后后面再需要什么东西自己加依赖就好
如果知道自己需要什么 也可以直接选上这样更省事
名字想改就改 然后直接创建就好了
第一次创建后可能下载相应依赖比较慢 等一下就好 前提你的maven是能用的 而且有网
2.后面整个的话就是贴我的代码了
先上pox.xml文件 毕竟是依赖 要先下载好
就是 log4j的依赖 以及MongoDB的依赖
然后
log4j.properties文件 这个我没配置好 但是能用
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.mongotest</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<!--Mysql的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot整合jdbctemplate -->
<!--jdbctemplate的可以暂时不用导入,springboot的web包中有默认的-->
<!-- mysql的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后application.properties文件 这是全局配置文件 主要写我们的MongoDB的配置信息
27017 是MongoDB服务端口 db1是数据库名
注意 在刚开始的时候
我没有事先创建数据库db1和集合collection user 没有 它会自动创建 不用我们去手动创建
#设置servlet的端口号
server.port=10000
#连接MongoDB数据库
spring.data.mongodb.uri=mongodb://localhost:27017/db1
然后就是我的其他代码了 在文章最后贴出
注意
现在说明一下 没有写前端代码
在测试时 只是访问application.properties全局配置文件的配置的端口
加上配置的路径 然后传参数
参数直接在路径后面写上!!! 回车测试 看页面显示 没有返回值的看控制台输出结果
只是简单的整合
使用了一个User类 dao层 Service层 controller层
然后在初始化创建好的com.example.mongotest.demo的包下有四个包里面就是我的代码
注意一定要建在
com.example.mongotest.demo这个初始化的包的下面 不然可能发生错误
展开
可以先看看结果
先测试写的insert方法 然后依次测试其他方法 就是依次访问不同路径 带着参数
1.增加记录的结果
访问http://localhost:10000/user/register?id=2&name=qingqing&age=20&password=123456
路径 后面跟的是参数
调用insert方法
我插入数据
这样我插入了好几条数据
> db.user.find()
{ "_id" : "19", "name" : "qing", "password" : "123456", "age" : 18, "_class" : "com.example.mongotest.demo.bean.User" }
{ "_id" : "9", "name" : "qingqing", "password" : "123456", "age" : 18, "_class" : "com.example.mongotest.demo.bean.User" }
{ "_id" : "1", "name" : "qingqing", "password" : "123456", "age" : 18, "_class" : "com.example.mongotest.demo.bean.User" }
{ "_id" : "2", "name" : "qingqing", "password" : "123456", "age" : 20, "_class" : "com.example.mongotest.demo.bean.User" }
{ "_id" : "3", "name" : "shuai", "password" : "123456", "age" : 18, "_class" : "com.example.mongotest.demo.bean.User" }
{ "_id" : "4", "name" : "shuai", "password" : "123456", "age" : 22, "_class" : "com.example.mongotest.demo.bean.User" }
2.findUserByUserName结果
用的template.findOne(query , User.class)方法 只返回一条数据
就是如过有重复的 默认返回第一条
3.updateUser 更新数据
本来传的的User对象 因为没有写页面 只能在地址栏通过get传值
所以修改为三个变量
注意 昂 看插入数据 是可以使用User实体类作为参数的
然后传参的时候使用三个变量 没问题 它会自动映射的!!!!!这边就这样写吧 我刚开始理解错了 所以改了
根据id更新name和age
这个是执行后的截图
本来是 加上的 ?id=1&name=sunqing&age=8
看看结果没有错
> db.user.find({'_id':'1'})
{ "_id" : "1", "name" : "sunqing", "password" : "123456", "age" : 8, "_class" : "com.example.mongotest.demo.bean.User" }
4.根据名字查询数据并删除
findUserByUserNameAndRemove
控制台的输出
INFO [http-nio-10000-exec-6] - 我获取到了名字为shuai的这些人 他们是:
User{id='3', name='shuai', password='123456', age=18}
User{id='4', name='shuai', password='123456', age=22}
INFO [http-nio-10000-exec-6] - 然后我删除了他们
5.查找并删除 这是根据age
findUserByCollection
http://localhost:10000/user/findUserByCollection?CollectionName=user&age=18
结果 删除成功
控制台输出
INFO [http-nio-10000-exec-2] - 我获取到了集合为user的这些人 :18岁 他们是:
User{id='19', name='qing', password='123456', age=18}
User{id='9', name='qingqing', password='123456', age=18}
INFO [http-nio-10000-exec-2] - 然后我删除了他们
6.删除对象
http://localhost:10000/user/deleteUserById?id=1
控制台输出
我删除了:1
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821191921145.png)
我的代码
User
```java
/**
* 作者:Shishuai
* 文件名:User
* 时间:2019/8/21 15:28
*/
package com.example.mongotest.demo.bean;
public class User {
private String id;
private String name;
private String password;
private int age;
还有getter setter 方法
toString方法
有参和无参构造 不贴了
MongoDBController
/**
* 作者:Shishuai
* 文件名:MongoDBController
* 时间:2019/8/21 15:24
*/
package com.example.mongotest.demo.controller;
import com.example.mongotest.demo.bean.User;
import com.example.mongotest.demo.service.UserService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Iterator;
import java.util.List;
@RestController
@RequestMapping("/user")
public class MongoDBController {
private static Logger logger = Logger.getLogger(MongoDBController.class);
@Autowired
private UserService userService;
@RequestMapping("/register")
public String insert(User user){
User user1 = userService.insert(user);
logger.info(user1);
logger.debug(user1);
// return "恭喜 "+user1.getName()+" 注册成功";
return "恭喜 注册成功";
}
//根据名字查询数据
@RequestMapping("/findUserByUserNameAndRemove")
public List<User> findUserByUserNameAndRemove(String userName){
List<User> list = userService.findUserByUserNameAndRemove(userName);
Iterator<User> iterator = list.iterator();
logger.info("我获取到了名字为"+userName+"的这些人 他们是:");
while(iterator.hasNext()){
User user = iterator.next();
System.out.println(user);
}
logger.info("然后我删除了他们");
return list;
}
//查找并删除 这是根据age
@RequestMapping("/findUserByCollection")
public List<User> findUserByCollection(String CollectionName,int age){
List<User> list = userService.findUserByCollectionAndRemove(CollectionName, age);
Iterator<User> iterator = list.iterator();
System.out.println(list);
logger.info("我获取到了集合为"+CollectionName+"的这些人 :"+ age + "岁 他们是:");
while(iterator.hasNext()){
User user = iterator.next();
System.out.println(user);
}
logger.info("然后我删除了他们");
return list;
}
// 根据用户名查询对象
@RequestMapping("/findUserByUser")
public User findUserByUserName(String userName){
User user = userService.findUserByUserName(userName);
System.out.println("我查到了:"+user);
logger.info("我查到了:"+user);
return user;
}
//更新对象
@RequestMapping("/updateUser")
public void updateUser(String id, String name, int age){
userService.updateUser(id, name, age);
System.out.println("我更新了"+name+age+id);
logger.info(name+age+id);
}
//删除对象
@RequestMapping("/deleteUserById")
public void deleteUserById(String id){
userService.deleteUserById(id);
System.out.println("我删除了:"+id);
}
}
interface UserDao
/**
* 作者:Shishuai
* 文件名:UserDao
* 时间:2019/8/21 15:27
*/
package com.example.mongotest.demo.dao;
import com.example.mongotest.demo.bean.User;
import java.util.List;
public interface UserDao {
public User insert(User user);
//根据名字查询数据
public List<User> findUserByUserNameAndRemove(String userName);
//查找并删除 这是根据age
public List<User> findUserByCollectionAndRemove(String CollectionName,int age);
// 根据用户名查询对象
public User findUserByUserName(String userName);
//更新对象
public void updateUser(String id, String name, int age);
//删除对象
public void deleteUserById(String id);
}
UserDaoImpl
/**
* 作者:Shishuai
* 文件名:UserDaoImpl
* 时间:2019/8/21 15:27
*/
package com.example.mongotest.demo.dao.Impl;
import com.example.mongotest.demo.bean.User;
import com.example.mongotest.demo.dao.UserDao;
import javafx.scene.shape.Circle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class UserDaoImpl implements UserDao {
@Autowired //注入mongodb的使用
private MongoTemplate template;
@Override
public User insert(User user) {
//注意:这里的集合的名字
//如果是第一次添加会直接在数据库中创建一个与当前的模型一样名字的集合.
//第二次直接将数据添加到这个集合中
System.out.println("you"+user);
User user1 = template.save(user);
return user1;
}
//根据名字查询数据
//Criteria 专门设置条件的类
public List<User> findUserByUserNameAndRemove(String userName) {
Query query=new Query(Criteria.where("name").is(userName));
//这里查找到后,会将数据库中数据删除
List<User> userlist = template.findAllAndRemove(query , User.class);
System.out.println("findUsers:"+userlist);
return userlist;
}
//查找并删除 这是根据age
public List<User> findUserByCollectionAndRemove(String CollectionName,int age) {
Query query=new Query(Criteria.where("age").is(age));
List<User> userlist = template.findAllAndRemove(query , User.class, CollectionName);
System.out.println("dao"+userlist);
return userlist;
}
//根据用户名查询对象
public User findUserByUserName(String userName) {
Query query=new Query(Criteria.where("name").is(userName));
User user = template.findOne(query , User.class);
return user;
}
//更新对象
public void updateUser(String id, String name, int age) {
Query query=new Query(Criteria.where("id").is(id));
Update update= new Update().set("name", name).set("age", age);
//更新查询返回结果集的第一条
template.updateFirst(query,update,User.class);
//更新查询返回结果集的所有
// template.updateMulti(query,update,User.class);
}
//删除对象
public void deleteUserById(String id) {
Query query=new Query(Criteria.where("id").is(id));
template.remove(query,User.class);
}
}
interface UserService
package com.example.mongotest.demo.service;
import com.example.mongotest.demo.bean.User;
import java.util.List;
public interface UserService {
public User insert(User user);
//根据名字查询数据
public List<User> findUserByUserNameAndRemove(String userName);
//查找并删除 这是根据age
public List<User> findUserByCollectionAndRemove(String CollectionName,int age);
// 根据用户名查询对象
public User findUserByUserName(String userName);
//更新对象
public void updateUser(String id, String name, int age);
//删除对象
public void deleteUserById(String id);
}
UserServiceImpl
/**
* 作者:Shishuai
* 文件名:UserServiceImpl
* 时间:2019/8/21 15:26
*/
package com.example.mongotest.demo.service.Impl;
import com.example.mongotest.demo.bean.User;
import com.example.mongotest.demo.dao.Impl.UserMySqlDaoImpl;
import com.example.mongotest.demo.dao.UserDao;
import com.example.mongotest.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User insert(User user) {
return userDao.insert(user);
}
@Override
public List<User> findUserByUserNameAndRemove(String userName) {
return userDao.findUserByUserNameAndRemove(userName);
}
@Override
public List<User> findUserByCollectionAndRemove(String CollectionName, int age) {
return userDao.findUserByCollectionAndRemove(CollectionName, age);
}
@Override
public User findUserByUserName(String userName) {
return userDao.findUserByUserName(userName);
}
@Override
public void updateUser(String id, String name, int age) {
userDao.updateUser(id, name, age);
}
@Override
public void deleteUserById(String id) {
userDao.deleteUserById(id);
}
}
注意有些错误可能是包没导入对 可以对着代码看看