1. 程式人生 > >MongDB-API在SSM框架中的配置及使用

MongDB-API在SSM框架中的配置及使用

一、在父工程的pom.xml中引入Maven依賴

<groupId>com.foriseland.fjf</groupId>
<artifactId>fjf-cache-mongdb</artifactId>
<version>1.0.0-SNAPSHOT</version>


二、配置springBean(在Service層的resources目錄下有一個Spring目錄,在Spring目錄下建立一個spring-mongodb-context.xml,裡面配置如下)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mongo="http://www.springframework.org/schema/data/mongo"
	xsi:schemaLocation="http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/data/mongo 
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.3.xsd
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


	<bean id="buguDataSource" class="com.foriseland.fjf.mongdb.pool.BuguDataSource" init-method="init">
		<!-- 遷移華為雲註釋 -->
		<property name="clusterNodes" value="192.168.2.1:27017,192.168.2.1:27017" />		
		<!--  華為雲配置 -->
		<!-- <property name="clusterNodes" value="10.100.125.155:27017" /> -->
		
		<!-- ${overall_public/mongdb.clusterNodes} -->
		<property name="databaseName" value="fl_media
" /> <!-- ${groupName/mongdb.databaseName} --> <property name="username" value="" /> <!-- ${groupName/mongdb.username} --> <property name="password" value="" /> <!-- ${groupName/mongdb.password} --> </bean> </beans>

三、pojo層

8個註解:@Entity@Id
@Property@Embed@EmbedList@Ref@RefList@Ignore
1個介面:BuguEntity

1個抽象類:SimpleEntity

    具體註解使用描述請參考git地址:
https://github.com/xbwen/bugu-mongo/wiki/%E5%AF%B9%E8%B1%A1&%E6%96%87%E6%A1%A3%E6%98%A0%E5%B0%84
一種較好的習慣是:儘量不設定@Property、@Embed、@EmbedList、@Ref、@RefList等註解的name屬性,使得資料庫的欄位名稱,與Java的屬性名稱,保持一致。

四、Dao層

你需要編寫自己的Dao,如UserDao,來操作User相關的資料。UserDao需要繼承自BuguDao,並且,在UserDao的建構函式中,需要傳遞User.class,如下:

public class UserDao extends BuguDao<User> {
public UserDao(){
super(User.class);
}
}
	需要繼承BuguDao,泛型為對應的pojo
	建構函式需要採用super(Pojo.class)


五、API說明(mongodb中是不需要寫mapper.xml和sql語句的,因為它的Dao繼承了BuguDao,裡面有自帶的增刪改查方法,具體API如下,列出部分)

具體API使用說明請參考git地址 
https://github.com/xbwen/bugu-mongo/wiki/DAO%E6%93%8D%E4%BD%9C



/*【基本查詢】*/
/* 查詢一個 */
public T findOne(String id)
public T findOne(String key, Object value)
/* 查詢全部 */
public List<T> findAll()
public List<T> findAll(String orderBy)
public List<T> findAll(int pageNum, int pageSize)
public List<T> findAll(String orderBy, int pageNum, int pageSize)
/* 查詢是否存在 */
public boolean exists(String id)
public boolean exists(String key, Object value)
/* 查詢數目 */
public long count()
public long count(String key, Object value)
/* 查詢某一欄位的不重複值 */
public List distinct(String key)

六、mongodb時間戳工具方法

    由於mongodb中的時間是標準時間UTC +0:00 而中國的時區是+8.00,兩種時間之間存在八個小時的時差。現在提供兩種方式解決日期類的問題(推薦使用第2中方式):

    l  1)日期型別採用System.currentTimeMillis()方式儲存Long型別的時間。

    l 2) 通過api獲得當前時間,具體方式為:com.bugull.mongo.utils.DataType. getMongoDate

        如果不傳入參Date,則獲取的是系統當前時間,會統一解決八小時的問題。