日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Boot之搞定mongoTemplate的知識(shí)小結(jié)

瀏覽:187日期:2023-07-28 15:21:25

最近開(kāi)發(fā)一些MongoDB+Spring Boot的項(xiàng)目,發(fā)現(xiàn)相較于MyBatis來(lái)說(shuō),Spring Boot對(duì)于MongoDB進(jìn)行操作變化更多,所以總結(jié)一下使用mongoTemplate庫(kù)的知識(shí)點(diǎn),以備以后查閱方便。

首先在項(xiàng)目中的pom.xml配置文件中添加如下依賴(lài):

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

在需要引入mongoTemplate對(duì)象的Service文件中添加該對(duì)象即可,如下所示:

public class JobService { // 引入mongoTemplate對(duì)象 @Autowired MongoTemplate mongoTemplate;

針對(duì)CURD操作,常用的API方法有如下4類(lèi):

更新: save()。 查詢(xún): findAll()、find()、findOne()。 更新操作:update()。 刪除操作: remove()。

下面以一個(gè)實(shí)際的CRUD例子來(lái)講解具體用法,在注釋中會(huì)給出語(yǔ)法。先還是創(chuàng)建一個(gè)數(shù)據(jù)類(lèi),假設(shè)我們是對(duì)武俠劍客數(shù)據(jù)進(jìn)行操作,POJO對(duì)象的定義代碼如下所示。

/** * 武俠劍客類(lèi) */@Data@NoArgsConstructor@AllArgsConstructor@Document(collection = 'my_sworders')public class MySworder implements Serializable { // 劍客的ID @Id private String id; // 姓名 @Field private String name; // 生平描述 @Field private String description; // 絕招 @Field private String skill; // 創(chuàng)建時(shí)間 @Field private int created;}

其中特別注意的是,@Document是mongodb驅(qū)動(dòng)庫(kù)提供設(shè)置操作的文檔集合名稱(chēng)的注解,這里設(shè)置集合為my_sworders。然后針對(duì)這個(gè)劍客類(lèi)編寫(xiě)一個(gè)Service文件,命名為SworderService.java:

@Servicepublic class SworderService { @Autowired MongoTemplate mongoTemplate; /** * 添加一個(gè)劍客 * @param mySworder * @return */ public boolean add(MySworder mySworder) { long unixTime = System.currentTimeMillis() / 1000L; int nowUnixTime = (int) unixTime; mySworder.setCreated(nowUnixTime); /** * 語(yǔ)法:<T> T mongoTemplate.save(T objectToSave) * save方法用于保存數(shù)據(jù)對(duì)象,傳遞定義好的JavaBean即可,被保存的數(shù)據(jù)對(duì)象會(huì)作為返回值被返回。 * 類(lèi)似地,使用insert也可以達(dá)到保存數(shù)據(jù)的作用。 */ MySworder obj = mongoTemplate.save(mySworder); if (obj.getId() > 0) { return true; } else { return false; } } /** * 獲取所有劍客數(shù)據(jù) * @return */ public List<MySworder> findAll() { /** * 語(yǔ)法:<T> List<T> findAll(Class<T> entityClass) * finAll會(huì)返回所有entityClass對(duì)應(yīng)的數(shù)據(jù)集合的數(shù)據(jù),相當(dāng)于MySQL中select * from xxx_table_name。 */ return mongoTemplate.findAll(MySworder.class); } public boolean update(MySworder mySworder) { // 創(chuàng)建查詢(xún)對(duì)象 Query query = Query.query(Criteria.where('id').is(mySworder.getId())); Update update = new Update(); update.set('name', mySworder.getName()); update.set('description', mySworder.getDescription()); update.set('skill', mySworder.getSkill()); /** * 語(yǔ)法:public UpdateResult updateFirst(Query query, UpdateDefinition update, Class<?> entityClass) * updateFirst用于更新第一個(gè)被匹配的數(shù)據(jù),query參數(shù)是查詢(xún)條件對(duì)象,update是需要更新的數(shù)據(jù)對(duì)象,entityClass就是對(duì)應(yīng)的JavaBean對(duì)象(文檔集合類(lèi)) */ UpdateResult updateResult = mongoTemplate.updateFirst(query, update, MyArticle.class); if (updateResult.getModifiedCount() > 0) { return true; } else { return false; } } public boolean updateBatchByKeyWords(String searchKey,String replaceString) { // 創(chuàng)建模糊查詢(xún)對(duì)象 Pattern pattern = Pattern.compile('^.*' + searchKey + '.*$', Pattern.CASE_INSENSITIVE); Criteria criteria = Criteria.where('description').regex(pattern); Update update = new Update(); update.set('description', replaceString); Query query = new Query(); query.addCriteria(criteria); /** * 語(yǔ)法:public UpdateResult updateMulti(Query query, UpdateDefinition update, Class<?> entityClass) * updateMulti用于所有被匹配的數(shù)據(jù),query參數(shù)是查詢(xún)條件對(duì)象,update是需要更新的數(shù)據(jù)對(duì)象,entityClass就是對(duì)應(yīng)的JavaBean對(duì)象(文檔集合類(lèi)) */ UpdateResult updateResult = mongoTemplate.updateMulti(query, update, MySworder.class); if (updateResult.getModifiedCount() > 0) { return true; } else { return false; } } public boolean delete(String id) { MySworder mySworder = new MySworder(); mySworder.setId(id); /** * 語(yǔ)法: DeleteResult remove(Object object) * 該方法用于刪除數(shù)據(jù),一般都是傳遞一個(gè)主鍵ID即可 */ DeleteResult deleteResult = mongoTemplate.remove(mySworder); if (deleteResult.getDeletedCount() > 0) { return true; } else { return false; } } public MySworder details(String id) { Query query = Query.query(Criteria.where('id').is(id)); /*** <T> T findOne(Query query, Class<T> entityClass)** findOne就是根據(jù)查詢(xún)條件(query)獲取一條數(shù)據(jù)。*/ return mongoTemplate.findOne(query, MySworder.class); }}

其中模糊查詢(xún)是使用了regex方法,并使用匹配Pattern對(duì)象來(lái)保存需要被匹配的字符串。

如果是多條件查詢(xún),則需要使用Query對(duì)象來(lái)保存多個(gè)查詢(xún)條件,具體代碼如下:

// 用于存儲(chǔ)條件對(duì)象Query query = new Query();Criteria nameCriteria = Criteria.where('name').is(loginUser.getName());Criteria passwordCriteria = Criteria.where('password').is(loginUser.getPassword());query.addCriteria(nameCriteria);query.addCriteria(passwordCriteria);MyUser hasUser = mongoTemplate.findOne(query, MyUser.class);Integer userId = hasUser.getId();

如果查詢(xún)條件很多,那么這個(gè)addCriteria的代碼段就會(huì)很長(zhǎng),這個(gè)時(shí)候就考慮自己再封裝一個(gè)工具類(lèi),把循環(huán)查詢(xún)條件和一些復(fù)雜查詢(xún)的過(guò)程給封裝成一個(gè)方法,這樣事半功倍。

到此這篇關(guān)于Spring Boot之搞定mongoTemplate的知識(shí)小結(jié)的文章就介紹到這了,更多相關(guān)Spring Boot搞定mongoTemplate內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆91精品91久久久的内涵| 久久精品卡一| 自拍自偷一区二区三区| 欧美91福利在线观看| 蜜臀av免费一区二区三区| 欧美一级精品| 亚洲高清成人| 激情视频一区二区三区| 亚洲精品极品少妇16p| 在线一区视频| 亚洲开心激情| 国产无遮挡裸体免费久久| 美女精品久久| 欧美精品日日操| 日本美女一区| 精品欧美激情在线观看| 欧美中文字幕| 日韩国产精品久久久久久亚洲| 丝袜亚洲另类欧美| 国精品一区二区| 久久青草久久| 蘑菇福利视频一区播放| 亚洲精品三级| 国产亚洲字幕| 成人精品视频| 免费成人网www| 日韩专区视频网站| 久久中文字幕导航| 午夜av成人| 99日韩精品| 日本少妇精品亚洲第一区| 国产精品成人自拍| a日韩av网址| 亚洲欧美视频一区二区三区| 日韩免费精品| 精品视频一区二区三区在线观看| 蜜桃视频一区二区三区在线观看| 国产精品亚洲欧美日韩一区在线| 久久久久久久久久久9不雅视频| 国产三级一区| 高清一区二区| 在线精品视频在线观看高清| 日韩有码av| 精品视频自拍| 在线亚洲激情| 久久91视频| 国产精品丝袜xxxxxxx| 91九色综合| 91精品婷婷色在线观看| 亚洲精品伊人| 日韩高清欧美| 日韩国产欧美一区二区三区| 成午夜精品一区二区三区软件| 日本久久综合| 日韩视频一区| 免费亚洲一区| 亚洲激情精品| 麻豆一区在线| 国产伊人精品| 久久国产麻豆精品| 香蕉人人精品| 国产美女精品视频免费播放软件| 亚洲精品黄色| 国产aa精品| 久久亚洲国产精品一区二区| 九九九精品视频| 亚洲免费毛片| 激情综合自拍| 精品国产一区二区三区性色av| 精品美女在线视频| 香蕉久久国产| 亚洲播播91| 国产精品视频一区二区三区综合| 91在线成人| 五月婷婷亚洲| 日本黄色精品| 国产伦乱精品| 亚洲一区二区免费看| 国产欧洲在线| 久久国产精品免费精品3p| 亚洲精品一区二区妖精| 免费一区二区三区在线视频| 亚洲精品日本| 在线成人直播| 视频福利一区| 国产黄色一区| 亚洲人成网站在线在线观看| 欧美69视频| 给我免费播放日韩视频| 欧美性www| 中文字幕成人| 日韩亚洲精品在线| 久久久久久久久久久妇女| 国内精品伊人| 国产精品一区二区三区四区在线观看 | 国产日韩一区二区三区在线| 成人精品亚洲| 国产在线观看91一区二区三区 | 国产女人18毛片水真多18精品| 国产精品一区二区av日韩在线| 免费日韩成人| 日韩精品欧美大片| 国产高清一区| 欧洲av不卡| 国产粉嫩在线观看| 久久久免费人体| 国产欧美高清视频在线| 亚洲理论在线| 一二三区精品| 国产精品试看| 激情91久久| 激情综合网站| av亚洲在线观看| 伊人久久大香线蕉av不卡| 欧美羞羞视频| 亚洲人成在线网站| 色婷婷久久久| 久久久久网站| 日韩福利一区| 日韩在线综合| 久久一区二区三区喷水| 激情综合在线| 国产精品美女久久久浪潮软件| 国产精品日本一区二区不卡视频 | 中文字幕系列一区| 韩国一区二区三区视频| 精品高清久久| 国产精品黑丝在线播放| 高清日韩中文字幕| 亚洲www啪成人一区二区| 欧美丰满日韩| 日韩av专区| 精品久久久亚洲| 久久久久黄色| 水蜜桃精品av一区二区| 日韩毛片视频| 亚洲福利久久| 亚洲欧美日韩一区在线观看| 亚洲一区二区三区久久久| 在线国产精品一区| 日韩高清不卡一区二区| 欧美专区一区| 免费视频一区二区三区在线观看| 香蕉精品视频在线观看| 欧美日韩视频网站| 国产精品字幕| 免费视频一区三区| 亚洲免费高清| 亚洲v天堂v手机在线| 欧美日韩1区| 久久一区欧美| 日韩在线短视频| 美女网站久久| 日本麻豆一区二区三区视频| 久久成人高清| 新版的欧美在线视频| 黄色不卡一区| 日韩欧美久久| 久久伊人久久| 午夜国产一区二区| 日本一不卡视频| 捆绑调教美女网站视频一区| 国产精品99在线观看| 天堂网在线观看国产精品| 亚洲天堂免费| 精品国产aⅴ| 国内激情久久| 日本亚洲欧洲无免费码在线| 美女国产一区二区三区| 香蕉久久精品| 日本久久二区| 97人人精品| 婷婷综合网站| 青草国产精品| 一本大道色婷婷在线| 香蕉久久夜色精品国产| 国产探花一区二区| 久久久久久一区二区| 在线亚洲欧美| 国产精品免费不| 激情婷婷亚洲| 日韩av网站在线观看| 国产欧洲在线| 亚洲精品成人一区| 中文字幕人成乱码在线观看| 日韩中文字幕区一区有砖一区 | 国产美女亚洲精品7777| 麻豆理论在线观看| 在线看片一区| 精品一区二区三区中文字幕在线| 日本欧美大码aⅴ在线播放| 国产成人精品999在线观看| 黄色免费成人| 久久精品日韩欧美| 免费在线成人网| 色一区二区三区四区| 蜜桃久久精品一区二区| 麻豆成人91精品二区三区| 一区在线免费观看| 国内精品麻豆美女在线播放视频|