欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【MongoDB】spring-data-mongo配置

  • config.properties

    黃山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

#MongoDB setting
mongo.host=127.0.0.1
mongo.port=27017
mongo.connectionsPerHost=100
mongo.threadsAllowedToBlockForConnectionMultiplier=50
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.socketTimeout=0
mongo.slaveOk=true

  • spring_mongo.xml

<!--引入配置屬性文件 -->
<context:property-placeholder location="classpath:db.properties" />

<!-- mongodb配置 -->
<mongo:mongo id="mongo" replica-set="${mongo.replica-set}" write-concern="SAFE">
	<mongo:options 
		connections-per-host="${mongo.connectionsPerHost}"
		threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
		connect-timeout="${mongo.connectTimeout}" 
		max-wait-time="${mongo.maxWaitTime}"
		auto-connect-retry="${mongo.autoConnectRetry}" 
		socket-keep-alive="${mongo.socketKeepAlive}"
		socket-timeout="${mongo.socketTimeout}" 
		slave-ok="${mongo.slaveOk}"
		write-number="1" 
		write-timeout="0" 
		write-fsync="true" 
	/>
</mongo:mongo>

<!-- mongo的工廠,通過它來取得mongo實例,dbname為mongodb的數(shù)據(jù)庫名,沒有的話會自動創(chuàng)建 -->
<mongo:db-factory id="mongoDbFactory" dbname="uba" mongo-ref="mongo" />

<!-- 讀寫分離級別配置  -->
<!-- 首選主節(jié)點,大多情況下讀操作在主節(jié)點,如果主節(jié)點不可用,如故障轉(zhuǎn)移,讀操作在從節(jié)點。 -->
<bean id="primaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.PrimaryPreferredReadPreference"></bean>
<!-- 最鄰近節(jié)點,讀操作在最鄰近的成員,可能是主節(jié)點或者從節(jié)點。  -->
<bean id="nearestReadPreference" class="com.mongodb.TaggableReadPreference.NearestReadPreference"></bean>
<!-- 從節(jié)點,讀操作只在從節(jié)點, 如果從節(jié)點不可用,報錯或者拋出異常。存在的問題是secondary節(jié)點的數(shù)據(jù)會比primary節(jié)點數(shù)據(jù)舊。  -->
<bean id="secondaryReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryReadPreference"></bean>
<!-- 優(yōu)先從secondary節(jié)點進行讀取操作,secondary節(jié)點不可用時從主節(jié)點讀取數(shù)據(jù)  -->
<bean id="secondaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryPreferredReadPreference"></bean>

<!-- mongodb的主要操作對象,所有對mongodb的增刪改查的操作都是通過它完成 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
	<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
	<property name="readPreference" ref="primaryPreferredReadPreference" />
</bean>

<!-- 映射轉(zhuǎn)換器,掃描back-package目錄下的文件,根據(jù)注釋,把它們作為mongodb的一個collection的映射 -->
<mongo:mapping-converter base-package="dev.lzq.uba.mongo.model" />

<!-- mongodb bean的倉庫目錄,會自動掃描擴展了MongoRepository接口的接口進行注入 -->
<mongo:repositories base-package="dev.lzq.uba.mongo.dao" />

  • entity

@Document(collection = "user")
public class User 
{
	@Id
	private int id;
	private String name;
	private int age;
	private String city;
	private String mote;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getMote() {
		return mote;
	}
	public void setMote(String mote) {
		this.mote = mote;
	}
	
}

  • dao配置

public interface MGUserDao extends MongoRepository<User, ObjectId>
{
	/**
	 * 方法名的嚴格遵守規(guī)定
	 * @param age
	 * @param page
	 * @return
	 */
	public Page<User> findByAgeGreaterThan(int age, Pageable page);
	
	/**
	 * 有@Query聲明查詢, 方法名不需要嚴格遵守規(guī)定
	 * @param name
	 * @param ageFrom
	 * @param ageTo
	 * @param pageable
	 * @return
	 */
	@Query("{'name':{'$regex':?0}, 'age': {'$gte':?1,'$lte':?2}}")
	public Page<User> findByNameAndAgeRange(String name, int ageFrom, int ageTo, Pageable pageable);
	
	@Query("{?0:?1}")
	public List<User> findByAttribute(String key, String value);
}

  • dao層的使用

    MongoRepository實現(xiàn)了的只是最基本的增刪改查的功能,要想增加額外的查詢方法,可以按照以下規(guī)則定義接口的方法。自定義查詢方法,格式為“findBy+字段名+方法后綴”,方法傳進的參數(shù)即字段的值,此外還支持分頁查詢,通過傳進一個Pageable對象,返回Page集合。 例如:

//查詢大于age的數(shù)據(jù) 
public Page<Product> findByAgeGreaterThan(int age,Pageable page) ;

    

    下面是支持的查詢類型,每三條數(shù)據(jù)分別對應:(方法后綴,方法例子,mongodb原生查詢語句)

GreaterThan(大于) 
findByAgeGreaterThan(int age) 
{"age" : {"$gt" : age}}

LessThan(小于) 
findByAgeLessThan(int age) 
{"age" : {"$lt" : age}}

Between(在...之間) 
findByAgeBetween(int from, int to) 
{"age" : {"$gt" : from, "$lt" : to}}

IsNotNull, NotNull(是否非空) 
findByFirstnameNotNull() 
{"age" : {"$ne" : null}}

IsNull, Null(是否為空) 
findByFirstnameNull() 
{"age" : null}

Like(模糊查詢) 
findByFirstnameLike(String name) 
{"age" : age} ( age as regex)

(No keyword) findByFirstname(String name) 
{"age" : name}

Not(不包含) 
findByFirstnameNot(String name) 
{"age" : {"$ne" : name}}

Near(查詢地理位置相近的) 
findByLocationNear(Point point) 
{"location" : {"$near" : [x,y]}}

Within(在地理位置范圍內(nèi)的) 
findByLocationWithin(Circle circle) 
{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}

Within(在地理位置范圍內(nèi)的) 
findByLocationWithin(Box box) 
{"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}

    盡管以上查詢功能已經(jīng)很豐富,但如果還不能滿足使用情況的話可以用一下方法---基于mongodb原本查詢語句的查詢方式。

    例一:在原接口中加入,注釋Query里面的就是mongodb原來的查詢語法,我們可以定義傳進來的查詢參數(shù),通過坐標定義方法的參數(shù)。

@Query("{ 'name':{'$regex':?2,'$options':'i'}, sales': {'$gte':?1,'$lte':?2}}")
public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);

    例二:還可以在后面指定要返回的數(shù)據(jù)字段,如上面的例子修改如下,則只通過person表里面的name和age字段構建person對象。

@Query(value="{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}",fields="{ 'name' : 1, 'age' : 1}") 
public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);

新聞標題:【MongoDB】spring-data-mongo配置
本文鏈接:http://chinadenli.net/article4/geojoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設網(wǎng)站制作外貿(mào)網(wǎng)站建設自適應網(wǎng)站建站公司定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作