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

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

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

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

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

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

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

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

public class JobService { // 引入mongoTemplate對象 @Autowired MongoTemplate mongoTemplate;

針對CURD操作,常用的API方法有如下4類:

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

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

/** * 武俠劍客類 */@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)建時間 @Field private int created;}

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

@Servicepublic class SworderService { @Autowired MongoTemplate mongoTemplate; /** * 添加一個劍客 * @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ù)對象,傳遞定義好的JavaBean即可,被保存的數(shù)據(jù)對象會作為返回值被返回。 * 類似地,使用insert也可以達到保存數(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會返回所有entityClass對應(yīng)的數(shù)據(jù)集合的數(shù)據(jù),相當于MySQL中select * from xxx_table_name。 */ return mongoTemplate.findAll(MySworder.class); } public boolean update(MySworder mySworder) { // 創(chuàng)建查詢對象 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用于更新第一個被匹配的數(shù)據(jù),query參數(shù)是查詢條件對象,update是需要更新的數(shù)據(jù)對象,entityClass就是對應(yīng)的JavaBean對象(文檔集合類) */ 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)建模糊查詢對象 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ù)是查詢條件對象,update是需要更新的數(shù)據(jù)對象,entityClass就是對應(yīng)的JavaBean對象(文檔集合類) */ 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ù),一般都是傳遞一個主鍵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對象來保存需要被匹配的字符串。

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

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

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

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

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 房间温控器|LonWorks|海思| 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 许昌奥仕达自动化设备有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 模型公司_模型制作_沙盘模型报价-中国模型网| 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 达利园物流科技集团-| 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 加盟店-品牌招商加盟-创业项目商机平台| 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 |