Spring Data 与MongoDB 集成四:操作篇(查询)

2023-11-04

本文转载至:http://blog.csdn.net/congcong68/article/details/47183209

一.简介

     spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我们介绍了对MongoDB的新增和删除, 今天我们要介绍Java代码实现对MongoDB实现查询操作。

     我们回顾一下,我们在之前介绍了MongoDB的基本文档查询,MongoDB的查询语法:

       db.orders.find({{<field1>:<value1>,<field2>: <value2>, ... } },{field1:<boolean>, field2: <boolean> ... })


      我们介绍是SpringData MongoDB 提供了find方法,方便我们通过java代码实现对MongoDB的查询操作:

       mongoTemplate.find (query, entityClass)

      参数说明:

       entityClass:实体class,也就是要把文档转换成对应的实体。

      query查询语句的实现的方式有两种:

 

        1.org.springframework.data.mongodb.core.query

          构造函数

          Query (Criteria criteria)

         接受的参数是org.springframework.data.mongodb.core.query.Criteria

       

         Criteria是标准查询的接口,可以引用静态的Criteria.where的把多个条件组合在一起,就可以轻松地将多个方法标准和查询连接起来,方便我们操作查询语句。

        例如: 查询条件onumber="002"

        mongoTemplate.find (new Query(Criteria.where("onumber").is("002")),entityClass)


        多个条件组合查询时:

       例如:onumber="002" and cname="zcy"

     

         mongoTemplate.find (new Query(Criteria.where("onumber").is("002").and("cname").is("zcy")),entityClass)

 

       例如:onumber="002" or cname="zcy"

         mongoTemplate.findOne(newQuery(newCriteria().orOperator(Criteria.where("onumber").is("002"),Criteria.where("cname").is("zcy"))),entityClass); 


      我们通过Criteria的and方法,把这个条件组合一起查询

 

      Criteria提供了很多方法,我们这边先介绍基本文档的查询操作符,对于数组文档或者内嵌文档的操作符,我们下一篇在介绍。

  

Criteria

Mongodb

说明

Criteria and (String key)

$and

并且

Criteria andOperator (Criteria…​ criteria)

$and

并且

Criteria orOperator (Criteria…​ criteria)

$or

或者

Criteria gt (Object o)

$gt

大于

Criteria gte (Object o)

$gte

大于等于

Criteria in (Object…​ o)

$in

包含

Criteria is (Object o)

$is

等于

Criteria lt (Object o)

$lt

小于

Criteria lte (Object o)

$lte

小等于

Criteria nin (Object…​ o)

$nin

不包含

。。。。。。。。。。。。。。

 

 

   2、子类 org.springframework.data.mongodb.core.query.BasicQuery


     构造方法

         BasicQuery(DBObject queryObject)

         BasicQuery(DBObject queryObject, DBObject fieldsObject)

         BasicQuery(java.lang.String query)

          BasicQuery(java.lang.String query, java.lang.String fields)

        

         DBObject就是转换成JSON格式,提供了我们回顾一下,MongoDB查询时,

             db.collection.find(query,projection),query类型是document,所以,我们想使用JSON字符串查询时,我们使用DBObject创建查询实例。

                 

               DBObject是接口,提供了几个子类,

                            

                  



            我们比较经常使用的比较底层子类,扩展了自己的方法和继承父类,所以功能会比较多。

 

           1. BasicDBObject

                BasicBSONObject extendsLinkedHashMap<String,Object> implements BSONObject

                BasicDBObject extends BasicBSONObject implementsDBObject


               例如:查询条件onumber="002"


                DBObject obj = new BasicDBObject();

               obj.put( "onumber","002" );

             

               相当于

                db.collect.find({"onumber":"002"}) 

 

 

             2. BasicDBList

                   BasicBSONList extendsArrayList<Object> implements BSONObject

                   BasicDBList extends BasicBSONList implements DBObject


                   BasicDBList可以存放多个BasicDBObject条件

 

                       例如:我们查询onumber=002OR cname=zcy1

                         BasicDBList basicDBList=new BasicDBList();

                         basicDBList.add(new BasicDBObject("onumber","002"));

                         basicDBList.add(new BasicDBObject("cname","zcy1"));

                        DBObjectobj =newBasicDBObject();

                       obj.put("$or", basicDBList);

                       Query query=new BasicQuery(obj);

           相当于

                  db.orders.find({$or:[{"onumber":"002"},{"cname":"zcy1"}]})

                

                      basicDBList.add方法是添加一个文档的查询条件

                     


             3. com.mongodb. QueryBuilder


                     QueryBuilder默认构造函数,是初始化BasicDBObject,QueryBuilder多个方法标准和查询连接起来,方便我们操作查询语句。跟Criteria是标准查询的接口一样,

                    

              QueryBuilder和BasicDBObject配合使用

 

              QueryBuilder帮我们实现了  $and等操作符,我们查看部分的源代码:QueryBuilder部分的源代码:

[java]  view plain  copy
  1. publicclassQueryBuilder {  
  2.    
  3.   /** 
  4.     * Creates a builder with an empty query 
  5.     */  
  6.   publicQueryBuilder() {  
  7.        _query = new BasicDBObject();  
  8.    }  
  9.   publicQueryBuilder or( DBObject ... ors ){  
  10.        List l = (List)_query.get( "$or" );  
  11.        if ( l == null ){  
  12.            l = new ArrayList();  
  13.            _query.put( "$or" , l );  
  14.        }  
  15.        for ( DBObject o : ors )  
  16.            l.add( o );  
  17.        return this;  
  18.   }  
  19.   
  20.   /** 
  21.     * Equivalent to an $and operand 
  22.     * @param ands 
  23.     * @return 
  24.     */  
  25.   @SuppressWarnings("unchecked")  
  26.   publicQueryBuilder and( DBObject ... ands ){  
  27.        List l = (List)_query.get( "$and" );  
  28.        if ( l == null ){  
  29.            l = new ArrayList();  
  30.            _query.put( "$and" , l );  
  31.        }  
  32.        for ( DBObject o : ands )  
  33.            l.add( o );  
  34.        return this;  
  35.    }  

                      接下来我们介绍查询的实现, Criteria提供了很多方法,我们这边就不在一个一个的操作符执行一遍,这跟学习MongoDB 四: MongoDB查询(一)基本文档的操作符介绍的一样。

    

 二.findOne查询

         findOne返回满足指定查询条件的文档,如果多个文档满足查询,该方法返回第一个文档,根据自然顺序返回文件在磁盘上的顺序,在覆盖的集合中,自然顺序与插入顺序相同。如果没找到对应的文档,会返回null。

方法:

       mongoTemplate.findOne(query,entityClass)

 

       1.      介绍接口以及方法的实现

               我们在上一篇有介绍了实现基本的添加,对整个结构有介绍了,我们这边就不在介绍了,直接介绍往里面添加方法

                 

              第一步:我们在基础接口MongoBase.java类新增一个findOne的接口

[java]  view plain  copy
  1. //根据条件查询  
  2. blic T findOne(Query query,String collectionName);  
           第二步:我们在OrdersDaoImpl类添加一个具体findOne的实现方法

[java]  view plain  copy
  1.       @Override  
  2. ublic Orders findOne(Query query, String collectionName) {  
  3. return mongoTemplate.findOne(query, Orders.class, collectionName);  

      第三步:实现测试方法

         

[java]  view plain  copy
  1. /测试testFindOne方法添加  
  2.    @Test  
  3.    public void testFindOne() throws ParseException  
  4.    {  
  5.       
  6.      Queryquery=newQuery(Criteria.where("onumber").is("002"));  
  7.      Ordersorder=ordersDao.findOne(query,collectionName);  
  8.      System.out.println(JSONObject.fromObject(order));  
  9.       
  10.   }  

 

   我们到MongoDB查询时,有两条onumber值相同的文档

      

[sql]  view plain  copy
  1. > db.orders.find()  
  2. "_id" : ObjectId("55b3ae9bee10ded9390d0b97"),"_class" : "com.mongo.model.Orders""onumber" : "002""date" :ISODate("2015-01-24T16:07:00Z"), "cname" : "zcy1""items" : [ { "quantity" : 5,"price" : 4, "pnumber" : "p001" }, {"quantity" : 6, "price" : 8, "pnumber" :"p002" } ] }  
  3. "_id" : ObjectId("55b3aea5ee10f970a2da7017"),"_class" : "com.mongo.model.Orders""onumber" : "002""date" :ISODate("2015-01-24T16:07:00Z"), "cname" : "zcy2""items" : [ { "quantity" : 5,"price" : 4, "pnumber" : "p003" }, { "quantity" : 6, "price" : 8, "pnumber" :"p004" } ] }  


    我们执行findOne时查询条件为onumber=002,返回第一个记录  

[sql]  view plain  copy
  1. {"cname":"zcy1","date"{"date":25,"day":0,"hours":0,"minutes":7,"month":0,"seconds":0,"time":1422115620000,"timezoneOffset":-480,"year":115},"id":"55b3ae9bee10ded9390d0b97","items":[{"pnumber":"p001","price":4,"quantity":5},{"pnumber":"p002","price":8,"quantity":6}],"onumber":"002"}  


  三.find查询

 

      1.org.springframework.data.mongodb.core.query

       构造函数

        Query (Criteria criteria)

      接受的参数是org.springframework.data.mongodb.core.query.Criteria

 

        例子:查询onumber="002" 并且cname="zcy"

           OrdersDaoImpl类实现了find的方法

[java]  view plain  copy
  1. @Override  
  2.   publicList<Orders> find(org.springframework.data.mongodb.core.query.Queryquery, String collectionName) {  
  3.             return mongoTemplate.find(query, Orders.class, collectionName);  
  4.   }  


         实现测试方法

            Query query=new Query(Criteria.where("onumber").is("002").and("cname").is("zcy1"));       

[java]  view plain  copy
  1. @Test  
  2.    public void testFind() throws ParseException  
  3.    {  
  4.       Queryquery=newQuery(Criteria.where("onumber").is("002").and("cname").is("zcy1"));  
  5.       List<Orders>orders=ordersDao.find(query,collectionName);  
  6.       System.out.println(JSONArray.fromObject(orders));  
  7.      }  

       我们查看转换成Query 时,是怎么样的,我们断点跟踪一下

            


           会转换成对应的文档查询

 

   查询的结果

[java]  view plain  copy
  1. [{"cname":"zcy1","date":{"date":25,"day":0,"hours":0,"minutes":7,"month":0,"seconds":0,"time":1422115620000,"timezoneOffset":-480,"year":115},"id":"55b3ae9bee10ded9390d0b97","items":[{"pnumber":"p001","price":4,"quantity":5},{"pnumber":"p002","price":8,"quantity":6}],"onumber":"002"}]  


  相当于MongoDB

     b.orders.find({"onumber" : "002" ,"cname" : "zcy1"}) 


    还可以另外一种写法Criteria andOperator(Criteria…​ criteria)

 

      Queryquery=newQuery(Criteria.where("onumber").is("002").andOperator(Criteria.where("cname").is("zcy1")));

     一个Criteria中只能有一个andOperator,and可以多个,我们查询并列条件时,比较建议使用and方法。


    2、org.springframework.data.mongodb.core.query.BasicQuery

             构造方法

             BasicQuery(DBObject queryObject)

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

             BasicQuery(java.lang.String query)

            BasicQuery(java.lang.String query, java.lang.String fields)

        例子:查询onumber="002" or cname="zcy"

           OrdersDaoImpl类实现了find的方法

[java]  view plain  copy
  1. @Override  
  2.  publicList<Orders> find(org.springframework.data.mongodb.core.query.BasicQueryquery, String collectionName) {  
  3.            returnmongoTemplate.find(query, Orders.class, collectionName);  
  4.    }  

      实现测试方法

[java]  view plain  copy
  1. public voidtestFind() throwsParseException  
  2.    {  
  3.        
  4.       BasicDBListbasicDBList=newBasicDBList();  
  5.        
  6.       basicDBList.add(new BasicDBObject("onumber","002"));  
  7.       basicDBList.add(new BasicDBObject("cname","zcy1"));  
  8.       DBObjectobj = newBasicDBObject();  
  9.       obj.put("$or", basicDBList);  
  10.       Queryquery=newBasicQuery(obj);  
  11.       List<Orders>orders=ordersDao.find(query,collectionName);  
  12.       System.out.println(JSONArray.fromObject(orders));  
  13.    }  

   查询的结果:

       

[sql]  view plain  copy
  1. [{"cname":"zcy1","date":{"date":25,"day":0,"hours":0,"minutes":7,"month":0,"seconds":0,"time":1422115620000,"timezoneOffset":-480,"year":115},"id":"55bb9a3c27547f55fef9a10f","items":[{"pnumber":"p001","price":5,"quantity":6},{"pnumber":"p002","price":9,"quantity":7}],"onumber":"001"},  
[sql]  view plain  copy
  1. {"cname":"zcy1","date":{"date":25,"day":0,"hours":0,"minutes":7,"month":0,"seconds":0,"time":1422115620000,"timezoneOffset":-480,"year":115},"id":"55bb9a2727544d40b95156e1","items":[{"pnumber":"p001","price":5,"quantity":6},{"pnumber":"p002","price":9,"quantity":7}],"onumber":"001"}]  


     相当于MongoDB

         { "$or" : [ { "onumber" :"002"} , { "cname" : "zcy1"}]}


     QueryBuilder和BasicDBObject配合使用

          QueryBuilder queryBuildernewQueryBuilder(); 

         queryBuilder.or(new BasicDBObject("onumber","002"),newBasicDBObject("cname","zcy1")); 

        Query query=new BasicQuery(queryBuilder.get());

 

四.find查询时指定返回的需要的字段

    org.springframework.data.mongodb.core.query.BasicQuery提供了

             构造方法

         

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

            BasicQuery(java.lang.String query, java.lang.String fields)



      BasicQuery查询语句可以指定返回字段,构造函数

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

            fieldsObject 这个字段可以指定返回字段

            fieldsObject.put(key,value)

            key:字段

           value:

             说明:

                  1或者true表示返回字段

                 0或者false表示不返回该字段

               _id:默认就是1,没指定返回该字段时,默认会返回,除非设置为0是,就不会返回该字段。

               指定返回字段,有时文档字段多并数据大时,我们指定返回我们需要的字段,这样既节省传输数据量,减少了内存消耗,提高了性能,在数据大时,性能很明显的。

[java]  view plain  copy
  1. QueryBuilder queryBuilder = new QueryBuilder();   
  2. queryBuilder.or(new BasicDBObject("onumber""002"), new BasicDBObject("cname","zcy1"));   
  3. BasicDBObject fieldsObject=new BasicDBObject();  
  4. fieldsObject.put("onumber"1);  
  5. fieldsObject.put("cname"1);  
  6. uery query=new BasicQuery(queryBuilder.get(),fieldsObject);  

   返回结果:

            

[java]  view plain  copy
  1. [{"cname":"zcy1","date":null,"id":"55bb9a3c27547f55fef9a10f","items":[],"onumber":"001"},{"cname":"zcy1","date":null,"id":"55bb9a2727544d40b95156e1","items":[],"onumber":"001"}]  

 相当于MongoDB

          db.orders.find({"$or" : [ { "onumber" : "002"} , {"cname" : "zcy1"}]},{"onumber":1,"cname":1})  



       总结:

            我们经常比较使用的是org.springframework.data.mongodb.core.query.BasicQuery,首先提供了4个构造函数,在构造查询语句时,使用的是文档形式,方便我们对复杂查询的语句构造,而且还提供了指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段。指定返回字段,有时文档字段多并数据大时,我们指定返回我们需要的字段,这样既节省传输数据量,减少了内存消耗,提高了性能,在数据大时,性能很明显的。

           我们今天介绍了基本的文档操作,我们先了解怎么构造查询语句,并使用介绍了这两种方法,方便我们对查询的基本的理解,思路会更加清晰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data 与MongoDB 集成四:操作篇(查询) 的相关文章

  • js 修改服务器控件,js设置服务器控件的值

    js设置服务器控件的值 内容精选 换一换 规划数据服务器与集群处于同一内网 数据服务器IP为192 168 0 90和192 168 0 91 数据源文件格式为CSV 创建导入的目标表tpcds reasons CREATE TABLE t
  • 驱动开发概念详解

    1 什么是驱动 能够驱使硬件实现特定功能的软件代码 可以根据驱动程序是否依赖于系统内核将其分为裸机驱动和系统驱动 1 1裸机驱动 编写的驱动代码中没有进行任何内核相关的API调用 开发者查询资料配置寄存器完成硬件相关控制 不依赖于系统内核
  • 企业治理实战-经验分享

    该文章已同步到语雀公开知识库 大数据技术架构手册 1 中 公众号后台回复 小程序注册码 可免费查看面试题小程序 前言 作为一名数据人 常常自嘲为SQL Boy 某天突然发现原来SQL boy还有一些更高级的工作内容 数据治理 这两年也有很多
  • 第41篇-小某书timestamp2参数分析【2022-08-15】

    提前声明 该专栏涉及的所有案例均为学习使用 如有侵权 请联系本人删帖 文章目录 一 前言 二 加密分析 三 改版 一 前言 今天我们来分析一下timestamp2参数 aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29t
  • 图的深度遍历(DFS)和广度遍历(BFS)详解

    目录 1 前奏 邻接表 2 深度遍历 3 广度遍历 1 前奏 邻接表 图作为种比较繁琐的数据结构 在进行图的操作之前 首先应该用合适的数据类型来存储图的信息 我们使用邻接表来存储 它是一种链式的存储结构 所谓邻接表就是对途中的每个顶点建立一
  • 从0搭建go+walk界面应用开发程序(windows)

    从0搭建go walk界面应用开发程序 第一步 安装GO SDK 1 1 下载sdk 从官网下载SDK 进入https golang google cn dl 点击 download 或者直接使用浏览器或迅雷下载笔者自己上传的SDK htt
  • memo、useMemo和useCallback的区别

    memo用来优化函数组件的重复渲染行为 当传入属性值都不变的情况下不会触发组件的重新渲染 否则就会触发组件的重新渲染 和类组件的PureComponent的功能是类似的 在hooks环境下 几乎所有组件都是函数式组件 我们使用memo的几率
  • koa2 post请求ctx.request.body空获取不到的解决办法

    header请求头添加Content type application json
  • Java中的四种引用类型是哪些?

    从一开始学习Java我们就知道Java的数据类型一般有两种 一种是基本数据类型 另一种是引用数据类型 其中 基本数据类型的值通常储存在栈内存中 用于对该类型的对象进行存储 而引用数据类型则在存储堆中对需要引用的对象进行引用 引用是Java面
  • nps auth_key未授权访问漏洞

    一 漏洞简介 nps是一款轻量级 高性能 功能强大的内网穿透代理服务器 目前支持tcp udp流量转发 可支持任何tcp udp上层协议 访问内网网站 本地支付接口调试 ssh访问 远程桌面 内网dns解析等等 此外还支持内网http代理
  • 微信常见错误码及解决方案

    40001 获取access token时AppSecret错误 或者access token无效 这个错误代码表示您的访问令牌 access token 已经过期或者无效 需要重新获取 40003 openid错误 openid是微信公众
  • devServer-host解析

    devServer的其他配置 host解析 host设置主机地址 默认值是localhost 如果希望其他地方也可以访问 可以设置为 0 0 0 0 localhost 和 0 0 0 0 的区别 localhost 本质上是一个域名 通常

随机推荐

  • C语言实现队列

    文章目录 一 什么是队列 二 队列的实现 2 1 队列的结构 2 2 队列的几个功能 2 2 1 初始化队列 2 2 2 队列判空 2 2 3 队尾入队列 2 2 4 队头出队列 2 2 5 获取队列头部元素 2 2 6 获取队列队尾元素
  • QCM2290平台XBL阶段I2C使能并点亮LED

    描述 qcm2290平台上 在低压充电阶段 XBL 需要驱动LED灯芯片 提供接口供充电模块调用 显示充电指示灯功能 说明 LED控制芯片是I2C接口 我只需要提供接口即可 我这边实现了在开机时led灯闪烁 在充电相关PmicLib目录下添
  • 在webpack的less中使用绝对路径import

    假设项目目录结构如下 webpack中 resolve modulesDirectories path join dirname node modules path join dirname src 在a less中写上 import st
  • 干掉鲁大师监控,Windows免费监控软件

    大家好 今天我找到了一款在电脑上可以实时在任务栏显示实时网速的免费开源的小插件 非常的好用 而且呢它竟然还能实时的显示显卡和CPU的温度和占用一个百分比 让你对你的电脑性能了如指掌 一点也不逊色于收费的鲁大师桌面监控程序 拿到我的电脑上面去
  • 软件测试用例所有疑问,只需这篇就够了

    1 测试用例是什么 答 测试用例的设计就是如何覆盖所有软件表现出来的状态 即在满足输入 输出的一组条件下 软件运行是一系列有次序的 受控制的状态变化过程 2 设计用例是否有必要 答 如果不记下来 很可能到执行的时候测试点就遗漏了 另外也不便
  • 手撕源码之代码手写mvc

    1 首先附上代码地址 https gitee com cqut lin hand tear source code 实现思路 Spring主要也是通过DispatcherServlet实现了Servlet这个接口 又叫前端控制器 来自前端的
  • 51单片机的波特率

    最近使用51单片机的时候 设置串口的波特率 需要多种 固先记下来 晶振更改的时候可以通过excel中的改动来调整 excel在126中email的网盘中 51单片机的波特率 et 下面列表是基于定时器2的方式2 自动重装的方式 晶振 11
  • 安卓Activity跳转的几种方式

    本文转载于http blog sina com cn s blog 5140274d0100q4j7 html 本人仅作为学习交流之用 请大家尊重原创 第一种方式 用action来跳转 使用Action跳转 如果有一个程序的 Android
  • Java从小白到大牛第1篇 Java基础-关东升-专题视频课程

    Java从小白到大牛第1篇 Java基础 3042人已学习 课程介绍 本视频是智捷课堂推出的一套 Java语言学习立体教程 的视频第一部分 读者以及观看群是初级小白 通过本视频的学习能够成为Java大牛 本主要内容包括 Java语法基础 J
  • 波特率_通信基本概念扫盲(波特率与带宽的关系)

    在工作和学习中 通常会遇到一些比较基础的技术性问题 比如波特率为B的信号 它的频谱宽度是多少 说这个问题基础 但答案并不简单 今天分享的一些基本概念 就是希望能解答上述的问题 1 信号的快慢 表示信号快慢通常会用速率相关的参数 比如 码元速
  • 计算机主机内部结构连接,电脑主机内部结构图详解

    电脑主机内部结构分为多种硬件组合而成 硬件可以理解为看得到摸得着的东西 计算机硬件通常包括主板 CPU 内存 硬盘 光驱 电源 以及其他输入输出控制器和接口 如 USB 控制器 显卡 网卡 声卡等等 位于主机箱内的通常称为内设 而位于主机箱
  • android设备SD卡文件扫描与同步(暂备份)

    package com owo contentresolvermedia import java io File import java util ArrayList import android app Activity import a
  • 同一页面、不同页面监听localStorage变化

    当同源页面的某个页面修改了localStorage 其余的同源页面只要注册了storage事件 就会触发 所以 localStorage 的例子运行需要如下条件 同一浏览器打开了两个同源页面 其中一个网页修改了 localStorage 另
  • 简单易懂的隐马尔可夫模型(HMM)讲解

    学习目标 了解什么是马尔科夫链 知道什么是HMM模型 知道前向后向算法评估观察序列概率 知道维特比算法解码隐藏状态序列 了解鲍姆 韦尔奇算法 知道HMM模型API的使用 一 马尔科夫链 在机器学习算法中 马尔可夫链 Markov chain
  • Top-1错误率、Top-5错误率等常见的模型算法评估指标解析

    Top 1 错误率 指预测输出的概率最高的类别与人工标注的类别相符的准确率 就是你预测的label取最后概率向量里面最大的那一个作为预测结果 如过你的预测结果中概率最大的那个分类正确 则预测正确 否则预测错误 比如预测100张图像的类别 每
  • Spring Cloud Alibaba和Spring Cloud的区别

    目录 Spring Cloud Netflix 和 Spring Cloud 是什么关系 为什么有了Spring Cloud又出来个Spring Cloud Alibaba呢 Spring Cloud Alibaba都有哪些功能呢 Clou
  • JAVA——注解和反射

    注解的理解 引用b乎大佬的比喻 注解就像一张标签 给人贴标签是一种行为 会使一个人身上 的特性只有一部分被放大出来 但是换个角度 标签就是对事物行为的某些角度的评价与解释 从代码的角度上看 注解就是对于代码中需要拥有某些特别意义的功能的部分
  • 计算个人所得税

    输入一个职工的月薪salary 输出应交的个人所得税tax 保留2位小数 tax rate salary 850 当 salary lt 850 时 rate 0 0 当 850 lt salary lt 1350 时 rate 0 05
  • centos 6 yum源不可用安装报YumRepo Error: All mirror URLs are not using ftp, http[s] or file

    项目场景 centos6 5 使用yum安装资源时 报如下错误 1 YumRepo Error All mirror URLs are not using ftp http s or file 解决方案 修改 etc yum repos d
  • Spring Data 与MongoDB 集成四:操作篇(查询)

    本文转载至 http blog csdn net congcong68 article details 47183209 一 简介 spring Data MongoDB提供了org springframework data mongodb