MongoDB整合springboot
添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
添加配置(application.yml)
spring:
data:
mongodb:
# 主機地址
host: localhost
# 數據庫
database: airClub
# 端口
port: 27017
# 也可以使用uri連接
#uri: mongodb://localhost:27017/airClub
創建啟動類
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
創建實體類(相當於mongodb上的文檔)
- 在類上加上@Document(collection = ‘文檔名稱’)
- 在主鍵上加@id
- 在索引上加@Indexed
- 在類上上加@ConpoundIndex( def = ‘{“索引1名稱”:1,“索引2名稱”:-1}’)
service
- 在service類裡面注入MongoTemplate,從而用MongoTemplate進行操作
@Service
public class MongoDbService {
private static final Logger logger = LoggerFactory.getLogger(MongoDbService.class);
@Autowired
private MongoTemplate mongoTemplate;
/**
* 保存对象
* @param airClub
* @return
*/
public String saveObj(AirClub airClub) {
airClub.setCreateTime(new Date());
airClub.setUpdateTime(new Date());
mongoTemplate.save(airClub);
return "添加成功";
}
/**
* 查询所有
* @return
*/
public List<AirClub> findAll() {
return mongoTemplate.findAll(AirClub.class);
}
/***
* 根据id查询
* @param id
* @return
*/
public AirClub getAirClubById(String id) {
Query query = new Query(Criteria.where("_id").is(id));
return mongoTemplate.findOne(query, AirClub.class);
}
/**
* 根据名称查询
*
* @param name
* @return
*/
public AirClub getAirClubByName(String name) {
Query query = new Query(Criteria.where("name").is(name));
return mongoTemplate.findOne(query, AirClub.class);
}
/**
* 更新对象
*
* @param airClub
* @return
*/
public String updateAirClub(AirClub airClub) {
Query query = new Query(Criteria.where("_id").is(airClub.getId()));
Update update = new Update().set("publish", airClub.getPublish()).set("info", airClub.getInfo()).set("updateTime",
new Date());
// updateFirst 更新查询返回结果集的第一条
mongoTemplate.updateFirst(query, update, AirClub.class);
// updateMulti 更新查询返回结果集的全部
// mongoTemplate.updateMulti(query,update,AirClub.class);
// upsert 更新对象不存在则去添加
// mongoTemplate.upsert(query,update,AirClub.class);
return "success";
}
/***
* 删除对象
* @param airClub
* @return
*/
public String deleteAirClub(AirClub airClub) {
mongoTemplate.remove(airClub);
return "success";
}
/**
* 根据id删除
*
* @param id
* @return
*/
public String deleteAirClubById(String id) {
// findOne
AirClub airClub = getAirClubById(id);
// delete
deleteAirClub(airClub);
return "success";
}
/**
* 模糊查询
* @param search
* @return
*/
public List<AirClub> findByLikes(String search){
Query query = new Query();
Criteria criteria = new Criteria();
//criteria.where("name").regex(search);
Pattern pattern = Pattern.compile("^.*" + search + ".*$" , Pattern.CASE_INSENSITIVE);
criteria.where("name").regex(pattern);
List<AirClub> lists = mongoTemplate.findAllAndRemove(query, AirClub.class);
return lists;
}
}