使用springboot 2.x版本
首先引入mongo依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
然后是在配置文件中添加mongodb连接
spring.data.mongodb.uri=mongodb://localhost:27017/test
接下来是model类 , 注意使用的注解, id自动匹配到mongo中的_id , mongodb会自动创建集合, 名称与类相同, 同时也可以赋值
@Document(collection="city")
package com.bus365.root.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class City {
@Id
private Long id;
private String code;
private String name;
private String location;
private String province;
private String provincename;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getProvincename() {
return provincename;
}
public void setProvincename(String provincename) {
this.provincename = provincename;
}
}
使用MongoRepository 类进行操作, 是springboot集成好的 , 使用非常方便, 只需要按照规则拼接方法名即可, 拼接规则的关键字与mysql的封装的非常像 mysql 相关关键字请参考
https://blog.csdn.net/weixin_38413579/article/details/81638411
package com.bus365.root.dao;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.bus365.root.model.User;
public interface UserMongoDao extends MongoRepository<User, String>{
List<User> findByName(String name);
User save(User User);
}
对于复杂的查询 需要借助 mongoTemplate 他提供了非常多的查询api , 包括 and or 模糊查询 下面提供一个简单的例子
package com.bus365.root.dao;
import java.util.List;
import java.util.regex.Pattern;
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.stereotype.Repository;
import com.bus365.root.model.City;
@Repository
public class CityDao {
@Autowired
MongoTemplate mongoTemplate;
public List<City> getByNameLike(String name) {
Query query = new Query();
Criteria criteria = new Criteria();
Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(criteria.and("name").regex(pattern));
List<City> find = mongoTemplate.find(query, City.class);
return find;
}
public List<City> getByNameAndProvince(String name,String province) {
Query query = new Query();
Criteria criteria = new Criteria();
Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(criteria.and("name").regex(pattern));
query.addCriteria(criteria.where("province").is(province));
List<City> find = mongoTemplate.find(query, City.class);
return find;
}
public String save(City city) {
mongoTemplate.insert(city);
return "SUCCESS";
}
}
由于mongotemplate 提供的方法非常多, 可以根据需要自行查看api 等;
项目地址