创建一个springboot项目
然后pom.xml文件:(从pom文件里面可以看出,就一个包导入就可以了。)
1.<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jc</groupId> <artifactId>mongodemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mongodemo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!--mongodb的包--> <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> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
然后,yml文件:
spring: data: mongodb: uri: mongodb://IP地址:端口(27017或者你设置的)/(数据库的名称)
到此,配置的条条框框(虽然没啥)已经搞完,那么我们开始进入使用环节。
第一步是干嘛呢?
先看下,mongodb里面数据的格式:
从上边截图可以看到,这里面的Collections(大集合),其实就是类似mysql里面的表的那种东西。然后右边的框,可以看到有个Key的概念,其实就是指这个Collections(大集合)里面,你需要获取的小集合信息,在这个小集合里面,实际上是对应一个实体类的,取值的时候就get方法就可以。
上面是简单的介绍一下,其实我们还是看代码吧:
那么,我们先来建一个实体类吧,
UserEntity:
package com.jc.mongodemo.pojo; import java.io.Serializable; /** * @Author: JCccc * @CreateTime: 2018-09-28 * @Description: */ public class UserEntity implements Serializable { private static final long serialVersionUID = -3258839839160856613L; private Long id; private String userName; private String passWord; private String type; @Override public String toString() { return "UserEntity{" + "id=" + id + ", userName='" + userName + '\'' + ", passWord='" + passWord + '\'' + ", type='" + type + '\'' + '}'; } public static long getSerialVersionUID() { return serialVersionUID; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
好了,这里需要注意的是,上面实体类的字段,是必须一 一 对 应 mongodb里面某个小集合的 字段的!!!!!否则 ,不能成功取数据!(当然我们这教程是从0开始, 所以我们规定好,插入就行了。 后面取当然也就一一对应了。 但是如果你是直接上来就取数据,那么你就得注意对应了!)
然后写个方法类吧,我这里没严格解耦,
UserDaoImpl:
package com.jc.mongodemo.dao; import com.jc.mongodemo.pojo.UserEntity; 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; /** * @Author: JCccc * @CreateTime: 2018-09-28 * @Description: */ @Component public class UserDaoImpl { @Autowired private MongoTemplate mongoTemplate; /** * 创建对象 * @param user */ public void saveUser(UserEntity user) { mongoTemplate.save(user); } public List<UserEntity> findUserByType(String type) { Query query=new Query(Criteria.where("type").is(type)); List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class); return userlist; } public List<UserEntity> findUserByCollection(String CollectionName,String type) { Query query=new Query(Criteria.where("type").is(type)); List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class,CollectionName); return userlist; } /** * 根据用户名查询对象 * @param userName * @return */ public UserEntity findUserByUserName(String userName) { Query query=new Query(Criteria.where("userName").is(userName)); UserEntity user = mongoTemplate.findOne(query , UserEntity.class); return user; } /** * 更新对象 * @param user */ public void updateUser(UserEntity user) { Query query=new Query(Criteria.where("id").is(user.getId())); Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord()); //更新查询返回结果集的第一条 mongoTemplate.updateFirst(query,update,UserEntity.class); //更新查询返回结果集的所有 // mongoTemplate.updateMulti(query,update,UserEntity.class); } /** * 删除对象 * @param id */ public void deleteUserById(Long id) { Query query=new Query(Criteria.where("id").is(id)); mongoTemplate.remove(query,UserEntity.class); } }
从上边可以看到,已经开始使用mongodb了!!!! 都开始往里面CRUD了! 关键点在于啥???
关键点:
@Autowired private MongoTemplate mongoTemplate;
这就是告诉项目,我这里要注入mongodb的使用!
好了,然后我们去test里面去调用一下方法结束我们这个简单到极致的教程吧:
@RunWith(SpringRunner.class) @SpringBootTest public class MongodemoApplicationTests { @Test public void contextLoads() { } @Autowired private UserDaoImpl userDao; //...............空着先 }
然后开始尝试调用方法:
这是增加一个用户信息。
public void testSaveUser() throws Exception { UserEntity user=new UserEntity(); user.setId(106l); user.setUserName("小凯"); user.setPassWord("fffooo123"); user.setType("A"); userDao.saveUser(user); }
这是查询一个用户信息。
public void findUserByUserName(){ UserEntity user= userDao.findUserByUserName("小凯"); System.out.println("user is "+user); }
这是更新一个用户信息。
public void updateUser(){ UserEntity user=new UserEntity(); user.setId(106l); user.setUserName("大凯"); user.setPassWord("11223344"); userDao.updateUser(user); }
这是删除一个用户信息。
public void deleteUserById(){ userDao.deleteUserById(106l); }
好了,到此结束吧。
ps: 我这个例子,用户id我用的long类型哈,所以每个数字后面的l是让数字变成Long类型的意思。