首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Retrofit初探和简单使用

Retrofit 虽然是一套注解形的网络请求封装库,但是它的强大在于让代码结构更给为清晰,它可以直接解析JSON数据变成JAVA对象,甚至支持回调操作,处理不同的结果。...官方文档地址:http://square.github.io/retrofit/ github地址:https://github.com/square/retrofit 基本使用 添加依赖 在AndroidStudio...的项目中,在build.gradle文件中添加以下引用: compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2...:converter-gson:2.0.0-beta3' compile 'com.google.code.gson:gson:2.3' 数据格式的相关使用 今天我们使用聚合数据平台的免费的一个笑话的接口...@Query 是接口查询的关键字 封装接口服务的包装类 这个接口服务的包装类使用了单例模式,如下: package com.loonggg.retrofitdemo; import android.content.Context

72090
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用Retrofit获取服务器返回来的JSON字符串

    在大家使用网络请求的时候,往往会出现一种情况:需要在拿到服务器返回来的JSON字符串,而Retrofit会默认将Json解析,而又没有直接暴露出拿到Json字符串的方法,经过在网上一定的查阅,再次给大家一个简单的办法...以下是我们在Api接口中的定义方法 //以前我们使用我们定义好的POJO或javabean类作为callback的泛型,以便Retrofit帮我们解析 @POST("/interface/xxxxxx"...) void getCouponList(Callback reponse); //但如果我们想获得JSON字符串,Callback的泛型里就不能写POJO类了,要写Response(...retrofit.client包下) @POST("/interface/xxxxxx") void getCouponList(Callback reponse); 那么在我们请求接口的时候...Retrofit自带的JSON解析(或者别的什么) Coupon coupon = new Gson().fromJson(jsonString, Coupon.class);

    3.4K100

    Mybatis Mapper.xml 配置文件中 resultMap 节点的源码解析

    在使用 Mybatis 的时候,都会使用resultMap节点来绑定列与bean属性的对应关系,但是一般就只会使用其简单的属性,他还有一些比较复杂的属性可以实现一些高级的功能,在没查看源码之前,我也只会简单的使用...type:表示其对应的pojo类型,可以使用别名,也可以使用全限定类名 autoMapping:如果设置这个属性,MyBatis 将会为这个 ResultMap开启或者关闭自动映射。...javabean 对象对应的属性,默认情况下 mybatis 会调用实体类的无参构造方法创建一个实体类,然后再给各个属性赋值,如果没有构造方法的时候,可以使用 constructor 节点进行绑定,如现有如下的构造方法...,下面是一个比较复杂的例子,源码解析会按照其来解析,例子来自于官方文档。...,之后在解析 Mapper.xml 文件的其他节点,参考 Mybatis 解析 SQL 源码分析一

    2.1K40

    MyBatis逆向工程代码的生成以及使用详解(持续更新)

    配置的命令提示符 作为具有XML配置的Ant任务 作为一个Maven插件 从另一个java程序,基于XML配置 从另一个java程序,基于java的配置 通过Eclipse插件 一般来说,我们会选择使用一个...-- 默认为false,把JDBC DECIMAL 和NUMERIC类型解析为Integer,为true时 把JDBC DECIMAL 和NUMERIC类型解析为java.math.BigDecimal...: 数据库驱动、地址、用户名、密码 POJO类、mapper接口、mapper映射文件生成的位置 指定数据表 配置完成之后运行GeneratorSqlmap.java中的main方法就会生成对应数据表的代码...那是因为他除了常规的POJO之外还生成了用于设置条件的xxxExample,比如图中的TbItem.java和TbItemExample.java,Example的具体使用会在后面的代码使用中详细说。...example用于生成一个Criteria对象来设置查询条件,具体使用方法和方法1是一样的,唯一的把不同就是返回值是所有列。

    2.6K30

    【愚公系列】2023年04月 Java教学课程 139-Spring MVC框架的前后端数据交互

    POJO中的属性对应,@RequestBody注解可以自动映射对应请求数据到POJO中 //注意:POJO中的属性如果请求数据中没有,属性值为null,POJO中没有的属性如果请求数据中有,不进行映射...al = new ArrayList(); al.add(user1); al.add(user2); return al; } 二、异步请求-跨域访问 跨域请求是指在一个域下的网页请求另一个域下的资源时...1.1 跨域访问介绍 当通过域名A下的操作访问域名B下的资源时,称为跨域访问 跨域访问时,会出现无法访问的现象 1.2 跨域环境搭建 为当前主机添加备用域名 修改windows安装目录中的host...位置:处理器类中的方法上方 或 类上方 作用:设置当前处理器方法/处理器类中所有方法支持跨域访问 范例: @RequestMapping("/cross") @ResponseBody //使用@CrossOrigin...开启跨域访问 //标注在处理器方法上方表示该方法支持跨域访问 //标注在处理器类上方表示该处理器类中的所有处理器方法均支持跨域访问 @CrossOrigin public User cross(HttpServletRequest

    50520

    Java 反射 -超详细讲解(附源码)「建议收藏」

    也就是jvm中有很多的实例,每个类都有唯一的Class对象。 Class 类没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机自动构造的。...获取类对象有3种方式 Class.forName()(常用) Hero.class new Hero().getClass() 在一个JVM中,一种类,只会有一个类对象存在。...常用第一种,第二种需要导入类的包,依赖太强,不导包就抛编译错误。...):获取”某个构造方法”可以是私有的,或受保护、默认、公有; ---- 3: 获取成员变量并使用 基本步骤 1.获取HeroPlus类的对象 new方法/第2章中的方法 h 2....在测试类Test中,首先取出类名称和方法名,然后通过反射去调用这个方法。

    33610

    魔改 TypeAdapterFactory

    需要起名字 因为需要用 Gson 解析来解析 json,所以我们需要按照 server 返回的 json 来定义我们的请求体(被 @Body 注解的参数)以及响应体。...需要新建 class 上面两个 Api,我们需要定义 SmsCode、PhoneNum、AuthCode、SmsCodeAndOtherParams 四个类,然后在类里按照 json 的 key 定义对应的成员变量...Builder 模式来做,但是谁来写这么多的 builder 呢?...当然,可能会有人质疑,那 up 你的意思是劳资不用自己费力写 POJO,全用你的 Params 来替代?(如果我回答不是,你会不会一棒子打过来?) 使用场景 这个,我一开始也没提。...如果到了不是非常有必要定义 POJO 的时候,比如,你只是想要 POST 一个 phoneNumber 或者 authCode 的时候,真的没必要为此定义 POJO,多累呢!

    1.9K10

    巨坑系列:Java Bean 转 Map 的那些坑

    (2)在某些场景下,Map 的 key 并非和属性名完全对应,像是通过 get set 方法“推断”出来的属性名。...2.2 BeanMap 转换属性名错误 2.2.1 commons-beanutils 的 BeanMap maven 版本: 时,转为 Map 后 key 就会被解析成 uRL。 从这里看出,当属性名比较特殊时也很容易出问题,但 dubbo 这个工具类更符合我们的预期。...如果想严格和属性保持一致,可以使用反射获取属性名和属性值,加缓存机制提升解析的效率。 四、总结 Java Bean 转 Map 的坑很多,最常见的就是类型丢失和属性名解析错误的问题。...大家在使用 JSON 框架和 Java Bean 转 Map 的框架时要特别小心。 平时使用某些框架时,多写一些 DEMO 进行验证,多读源码,多调试,少趟坑。 ----

    1.2K10

    长文干货 | 手写自定义持久层框架!

    解析出来的内容 解析配置文件(使用dom4j) 创建类:SqlSessionFactoryBuilder#build(InputStream in) -> 设计模式之构建者模式 使用dom4j解析配置文件...完成了代码片段中的占位符的解析 然后根据给定的标记处理器( TokenHandler ) 来进行表达式的处理 // 三个参数: 分别为 openToken (开始标记)、 closeToken...方法 关闭 SqlSession) dao 的实现类中存在硬编码,如调用 sqlSession 方法时 参数 statementId 的硬编码 解决方案 通过代码模式来创建接口的代理对象 1.添加getMapper...方法 删除dao的实现类 UserDaoImpl.java 我们通过代码来实现原来由实现类执行的逻辑 在 SqlSession 中添加 getMapper 方法 public interface SqlSession...) 使用端 (引用持久层框架的jar ) 包含数据库配置信息 包含sql配置信息 包含sql语句 参数类型 返回值类型 项目目录结构最终为 提供端 ?

    82110

    Java开发手册阅读笔记

    前言 参考:阿里巴巴Java开发手册V1.3.0 总结比较重要的,对面试有用的开发规约 一、编程规约 (一)命名风格 【强制】POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误...反例:定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常...【推荐】如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式。...使用 IDE 的中工具:source> generate toString 时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。...说明:在方法执行抛出异常时,可以直接调用 POJO 的 toString()方法打印其属性值,便于排 查问题。

    1K40

    一位攻城狮的自我修养,在于良好的编程规范

    ,以Test结尾 类型与中括号紧挨来表示数组 POJO类中布尔类型的变量都不要加is前缀,在部分框架中会引起序列化错误 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词.包名统一使用单数形式....但是类名如果有复数含义,可以使用复数形式 杜绝不规范的缩写,避免望文不知义 为了达到代码自解释的目标,任何自定义的编程元素在命名时,使用尽量完整的单词组合来表达含义 在常量与变量命名的同时,表示类型的名词放在词尾...super.toString 这样在方法执行抛出异常时,可以直接调用POJO的toString()方法打印属性值,便于排查问题 禁止在POJO类中,同时存在对应属性Xxx的isXxx() 和getXxx...头来确定 前后端数据列表相关的接口返回时,如果为空,则返回空数组 [ ] 或者空集合 { } 服务端发生错误时,返回给前端的响应信息必须包含HTTP状态码, errorCode, errorMessage...HH:mm:ss", 统一为GMT 其它注意 在使用正则表达式时, 利用好预编译功能,可以有效加快正则匹配速度 不要在方法体内定义 二方库中可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的

    56210

    Mybatis系列全解(一):手写一套持久层框架

    在JDK1.x版本中,JDBC只是一个可选部件,到了JDK1.1公布时,SQL类包(也就是JDBCAPI)就成为Java语言的标准部件。 后面从JDBC1.0到JDBC4.0,一路发展。...,在JDK1.6之前JDBC规范中明确要求各家在实现Driver类时必须在静态代码段中向DriverManager注册实例,JDK1.6之后各家实现的Driver类则不再需要主动注册实例,因为DriverManager...已经在初始化阶段对所有jar包中实现了java.sql.Driver的类进行扫描并进行初始化。...创建数据库连接: DriverManager通过遍历所有已注册的驱动来尝试获取连接,第一个匹配上就会直接返回,并使用对应驱动建立起客户端与数据库服务器的网络连接(物理连接Socket了解一下)。...我们通过一段简单的例子来演示一下使用流程,本例子使用JDBC操作mysql数据库,先看看我们最终的项目结构与JDBC API在JDK中rt.jar的结构: 项目结构: [项目结构] JDBC API在JDK

    73310

    长文干货 | 手写自定义持久层框架!

    解析出来的内容 解析配置文件(使用dom4j) 创建类:SqlSessionFactoryBuilder#build(InputStream in) -> 设计模式之构建者模式 使用dom4j解析配置文件...完成了代码片段中的占位符的解析 然后根据给定的标记处理器( TokenHandler ) 来进行表达式的处理 // 三个参数: 分别为 openToken (开始标记)、 closeToken...方法 关闭 SqlSession) dao 的实现类中存在硬编码,如调用 sqlSession 方法时 参数 statementId 的硬编码 解决方案 通过代码模式来创建接口的代理对象 1.添加getMapper...方法 删除dao的实现类 UserDaoImpl.java 我们通过代码来实现原来由实现类执行的逻辑 在 SqlSession 中添加 getMapper 方法 public interface SqlSession...) 使用端 (引用持久层框架的jar ) 包含数据库配置信息 包含sql配置信息 包含sql语句 参数类型 返回值类型 项目目录结构最终为 提供端 ?

    80820

    这个坑,Java Bean 转 Map 要注意了

    (2)在某些场景下,Map 的 key 并非和属性名完全对应,像是通过 get set 方法“推断”出来的属性名。...大家可以下载源码来简单研究下。...如当属性名叫 URL 时,转为 Map 后 key 就会被解析成 uRL。 image.png 从这里看出,当属性名比较特殊时也很容易出问题,但 dubbo 这个工具类更符合我们的预期。...如果想严格和属性保持一致,可以使用反射获取属性名和属性值,加缓存机制提升解析的效率。 四、总结 Java Bean 转 Map 的坑很多,最常见的就是类型丢失和属性名解析错误的问题。...大家在使用 JSON 框架和 Java Bean 转 Map 的框架时要特别小心。平时使用某些框架时,多写一些 DEMO 进行验证,多读源码,多调试,少趟坑。

    59120

    整理《阿里巴巴Java开发手册》常用的编码规约

    2、中括号是数组类型的一部分,数组定义如下:String[] args; 3、POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。...4) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。 10、long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。...1) 跨应用共享常量:放置在二方库中,通常是client.jar中的constant目录下。      2) 应用内共享常量:放置在一方库的modules中的constant目录下。...2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。      3) 【推荐】所有的局部变量使用基本数据类型。 24、定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。...使用IDE的中工具:source> generate toString时,如果继承了另一个POJO类,注意在前面加一下super.toString。

    73730

    如何优雅的编写代码(持续更新......)

    POJO类中布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误。 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。...构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中。 禁止在POJO类中,同时存在对应属性xxx的isXxx()和getXxx()方法。...HashMap在容量不够进行resize时由于高并发可能出现死链,导致CPU飙升,在开发过程中可以使用其它数据结构或加锁来规避此风险。...控制流 在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后...在高并发场景中,避免使用”等于”判断作为中断或退出的条件。 表达异常的分支时,少用if-else方式,这种方式可以改写成,可以使用卫语句、策略模式、状态模式等来代替。

    82041

    Mybatis-06 动态Sql

    ofType & javaType javaType用来指定实体类中属性 ofTyoe用来指定映射到List或者集合中pojo类型,泛型中的约束类型 **注意点:**注意一对多和多对一中,属性名和字段的问题...这是因为在实体类中,数据库中定义时间属性为:create_time,有_。...存在内存中的临时数据 将用户经常查询的数据放在缓存中,用户查询的时候就不用从磁盘上查询了,而从缓存中查询,提高查询效率 为什么使用缓存?...映射语句文件中的所有 insert、update 和 delete 语句会刷新缓存。 缓存会使用最近最少使用算法(LRU, Least Recently Used)算法来清除不需要的缓存。...3.一级缓存 一级缓存也叫本地缓存: 在域数据库交互的同一个会话中,会将查过的数据放在缓存中 以后再查询相同的数据时,直接从缓存中取数据 测试 开启日志 测试两次查询同一条数据 @Test

    42920

    MyBatis笔记

    "/> 扫描包 每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。...例如 在pojo包下有一个名为User的类,那么扫描后的返回类型就为user 注解别名 和上侧相同,当包下的类有注解时,注解为Alias(“”) 则此时的返回类型就为注解内容,并且和类名无关 例如...在pojo包下有一个名为User的类,注解为Alias(“hello”),那么扫描后的返回类型为hello,并不为user 换一种说法,也就是在扫描包别名是,注解的优先级大于类名别名优先级 映射器配置...进行项目创建 当仅仅是简单查询时,不建议使用resultMap 为了保证项目的简洁,建议在创建实体类时,最后将数据库和实体类中的字段名一一对应。...然后在使用if语句进行判断,当有title这个值存在时,就把他拼接进去。同理 author也是如此。 这样就使用一个sql语句就解决带有N多种条件的查询啦!

    30010
    领券