Springboot配置MongoDB連接


  之前有個項目,用的是Springboot框架,對接的數據庫是mongodb,當時花了一些時間去做這個配置MongoDB的連接,現在把這個過程記錄下來,以免遺忘。

一、在pom中添加依賴。

<!-- 增加mongodb支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>

二、配置數據源

  在項目中,使用的配置文件是yaml格式的,所以配置信息如下:

spring:
  data:
  mongodb:
  uri: mongodb://地址

 

  如果使用的是properties格式的話,配置信息則是;

spring.data.mongodb.uri= mongodb://地址

三、在實體中添加注解

  在實體添加@Document注解,collection= "對應的表名"。

  在屬性上添加@Filed注解,值為對應的字段名。

@Getter
@Setter
@Document(collection = "User")
public class User {
/*
用戶id:
*/
  @Field("id")
private String id;
/*
用戶名
*/
@Field("UserName")
private String userName;
/*
性別
*/
@Field("sex")
private String sex;
}

 

四、在業務層使用MongoDb的方法:

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private MongoTemplate mongoTemplate;


    @Override
    public long getCount() {
        Query query = new Query();
        long count = mongoTemplate.count(query,User.class);
        return count;
    }

}

 

五、MongoTemplate常使用的方法

  1.插入

 mongoTemplate.insert(Object);

  2.刪除

 Query query=new Query(Criteria.where("_id").is(id)); mongoTemplate.remove(query,AutomaticAlarm.class); 

    3. 修改

  Query query=new Query(Criteria.where("_id").is(id));

  Update update = Update.update("要更新的字段", "更新的值");

  mongoTemplate.updateFirst(query, update, Object.class);

  4.查詢

1.查找所有

  mongoTemplate.findAll(Object.class);

2.條件查詢(具體某個字段的值)

  Query query=new Query(Criteria.where("字段1").is("值1"));
  mongoTemplate.find(query, Object.class);

3.條件查詢(大於小於)

  Criteria criteria = Criteria.where("字段").gte(某個值).lte(某個值);
   Query query = new Query(criteria);
  mongoTemplate.find(query, Object.class);

4.模糊查詢

  Pattern pattern = Pattern.compile("^.*" + searchKey + ".*$");//這里時使用的是正則匹配,searchKey是關鍵字,接口傳參,也可以自己定義。
    Criteria criteria = Criteria.where("_id").regex(pattern);
   mongoTemplate.find(query, Object.class); 

5.分頁查詢

    Query query = new Query();
    query.skip("跳過的數據條數").limit("一頁的數據條數");
    mongoTemplate.find(query, Object.class);
    
6.聚合查詢
    Aggregation aggregation1 = Aggregation.newAggregation(Aggregation.group("sex").count().as("peopleCount"));//這里的聚合條件由自己定義
    AggregationResults<BasicDBObject> outputTypeCount1 = mongoTemplate.aggregate(aggregation1, "User", BasicDBObject.class);//取出的結果需要自行進行處理,比如可以用getMappedResults來轉換

六、增強配置

    如果我們在項目中需要管理MongoDB的最大連接時長、socket保持活躍、最大等待時長等,那么我們在pom文件中需要引入一個增強管理包。

<!-- 增加mongoplus支持 -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>mongodb-plus-spring-boot-starter</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

    同時在項目啟動類SpringBootMainApplication上添加一個注解@EnableMongoPlus。

    我們就可以在配置文件中添加這些配置了。

spring:
data:
mongodb:
uri: mongodb://地址
option:
socket-keep-alive: true
max-connection-idle-time: 60000
# connect-timeout: 36000
# min-connection-per-host: 5
# threads-allowed-to-block-for-connection-multiplier: 5
# max-wait-time: 120000
# socket-timeout: 0
# max-connection-life-time: 0
# heartbeat-socket-timeout: 36000
# heartbeat-connect-timeout: 36000
# min-heartbeat-frequency: 5
# heartbeat-frequency: 10

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM