MongoDB之整合springboot

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;
  	}
  
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值