电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

<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類:

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

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

/** * 武俠劍客類 */@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)庫提供設(shè)置操作的文檔集合名稱的注解,這里設(shè)置集合為my_sworders。然后針對(duì)這個(gè)劍客類編寫一個(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); /** * 語法:<T> T mongoTemplate.save(T objectToSave) * save方法用于保存數(shù)據(jù)對(duì)象,傳遞定義好的JavaBean即可,被保存的數(shù)據(jù)對(duì)象會(huì)作為返回值被返回。 * 類似地,使用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() { /** * 語法:<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)建查詢對(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()); /** * 語法:public UpdateResult updateFirst(Query query, UpdateDefinition update, Class<?> entityClass) * updateFirst用于更新第一個(gè)被匹配的數(shù)據(jù),query參數(shù)是查詢條件對(duì)象,update是需要更新的數(shù)據(jù)對(duì)象,entityClass就是對(duì)應(yīng)的JavaBean對(duì)象(文檔集合類) */ 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)建模糊查詢對(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); /** * 語法:public UpdateResult updateMulti(Query query, UpdateDefinition update, Class<?> entityClass) * updateMulti用于所有被匹配的數(shù)據(jù),query參數(shù)是查詢條件對(duì)象,update是需要更新的數(shù)據(jù)對(duì)象,entityClass就是對(duì)應(yīng)的JavaBean對(duì)象(文檔集合類) */ 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); /** * 語法: 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ù)查詢條件(query)獲取一條數(shù)據(jù)。*/ return mongoTemplate.findOne(query, MySworder.class); }}

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

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

// 用于存儲(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();

如果查詢條件很多,那么這個(gè)addCriteria的代碼段就會(huì)很長(zhǎng),這個(gè)時(shí)候就考慮自己再封裝一個(gè)工具類,把循環(huán)查詢條件和一些復(fù)雜查詢的過程給封裝成一個(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)文章:
主站蜘蛛池模板: 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 吹塑加工_大型吹塑加工_滚塑代加工-莱力奇吹塑加工有限公司 | 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 中山市派格家具有限公司【官网】 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 传动滚筒_厂家-淄博海恒机械制造厂| 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 截齿|煤截齿|采煤机截齿|掘进机截齿|旋挖截齿-山东卓力截齿厂家报价 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 开云(中国)Kaiyun·官方网站 - 登录入口 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 魔方网-培训咨询服务平台 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 广东成考网-广东成人高考网 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 路面机械厂家| TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 广州小程序开发_APP开发公司_分销商城系统定制_小跑科技 |