相信很多人知道mongdb也是一种数据库。那么跟mysql的对应关系是怎么样的呢:
相信大家明白,那么mysql可以使用sqlyog也还可以使用navicat进行操作,那么mongdb呢:
也是可以添加索引的,mongdb是一个文本数据库。
那么开发怎么使用呢:
我在项目里面使用了两种方法,同时也做了测试,平时我们写的类,在mongdb可以是一张表,来存取数据
pom。xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/cms?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC username: root password: 1234 filters: stat initialSize: 100 maxActive: 1000 maxOpenPreparedStatements: 20 maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 500 poolPreparedStatements: true testOnBorrow: false testOnReturn: false testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 type: com.alibaba.druid.pool.DruidDataSource validationQuery: select 'x' data: mongodb: uri: mongodb://127.0.0.1:27017/person
此处需要注意遵守yml规范,同一个开头的放在一起,不然报错
本次测试用了三张表:
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Address { private String street; private String city; private String zip; }
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; @Document(collection="book") @Data @AllArgsConstructor @NoArgsConstructor public class Book { @Id private String id; private Integer price; private String name; private String info; private String publish; private Date createTime; private Date updateTime; }
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.bson.types.ObjectId; @Data @AllArgsConstructor @NoArgsConstructor public class Person { private ObjectId id; private String name; private int age; private Address address; }
dao类是关键,看两种方法:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; @Component public class AddressDao { @Autowired private MongoTemplate mongoTemplate; public Address savePerson(Address address){ return this.mongoTemplate.save(address); } }
import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; 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 PersonDAO { @Autowired private MongoTemplate mongoTemplate; public Person savePerson(Person person){ return this.mongoTemplate.save(person); } public List<Person> queryPersonListByName(String name) { Query query = Query.query(Criteria.where("name").is(name)); return this.mongoTemplate.find(query, Person.class); } public List<Person> queryPagePersonList(Integer page, Integer rows) { Query query = new Query().limit(rows).skip((page - 1) * rows); return this.mongoTemplate.find(query, Person.class); } public UpdateResult update(Person person) { Query query = Query.query(Criteria.where("id").is(person.getId())); Update update = Update.update("age", person.getAge()); return this.mongoTemplate.updateFirst(query, update, Person.class); } public DeleteResult deleteById(String id) { Query query = Query.query(Criteria.where("id").is(id)); return this.mongoTemplate.remove(query, Person.class); } }
import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository public interface BookDao extends MongoRepository<Book,String> { }
调用:
import com.jds.common.result.Result; import org.bson.types.ObjectId; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.management.StringValueExp; import java.util.Date; @RestController public class PersonController { @Autowired private PersonDAO personDAO; @Autowired private AddressDao addressDao; @Autowired BookDao bookDao; @RequestMapping(value = "/mp", method = RequestMethod.GET) public Result g() { Person person = new Person(ObjectId.get(), "张三", 20, new Address("人民路", "上海市", "666666")); Person person1 = personDAO.savePerson(person); return Result.success(person1); } @RequestMapping(value = "/mpp", method = RequestMethod.GET) public Result g1() { Address address = new Address("人民路", "上海市", "666666"); Address address1 = addressDao.savePerson(address); return Result.success(address1); } @RequestMapping(value = "/mppp", method = RequestMethod.GET) public Result g2() { Book book = new Book(); book.setCreateTime(new Date()); book.setInfo("zhongg"); book.setName("laow"); book.setPrice(6000); book.setPublish("wosh"); book.setUpdateTime(new Date()); Book save = bookDao.save(book); return Result.success(save); } }
最后结果:
通常用到mongdb时候,就说数据使用频率高,而且还是那种文本型的。