Guava优美代码-5-Ordering
优雅的Guava排序器在开发中经常会对一些数据进行排序或者搜索操作,以前基本上都是先实现Comparator比较器,然后根据这个比较器去比较具体对象之间的顺序。这个过程一直都为开发者所诟病,现在Guava为我们带来了全新的一种比较的方式,那就是Ordering排序器! 排序器[Ordering]是Guava链式风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的
优雅的Guava排序器在开发中经常会对一些数据进行排序或者搜索操作,以前基本上都是先实现Comparator比较器,然后根据这个比较器去比较具体对象之间的顺序。这个过程一直都为开发者所诟病,现在Guava为我们带来了全新的一种比较的方式,那就是Ordering排序器! 排序器[Ordering]是Guava链式风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的
对象操作类ObjectsJava语言中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, Guava也提供了类似的方式。 关于equals方法需要多说几句,就是我们在写equals判断的时候很容易忘掉很多判断条件,往往容易导致结果不正确,以下的
前置条件Preconditions 前置条件:让方法调用的前置条件判断更简单。 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量
尽量不要使用NULL轻率地使用null可能会导致很多令人吃惊的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受null,使用快速失败操作拒绝null值对开发者更有帮助。 此外,Null的含糊语义让人很不舒服。Null很少可以明确地表示某种语义,例如,Map.get(key)返回Null时,可能表示map中的值是null,亦或map中没
Google Guava简介Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/
MyBatis代码生成工具MyBatis GeneratorMyBatis Generator简介MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 它可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 它可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时
MyBatis的XML标签MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 代码示例这里就不做过多讲解啦,需要说的都在代码中进行了注释,希望大家仔细阅读。 TeacherMappe
MyBatis调用存储过程在业务逻辑非常复杂的时候,使用一般的代码编程会使得代码的效率变得非常的低,这个时候使用数据库中的存储过程将会是一个不错的选择。下面我们通过教师表这个例子为大家讲述如何使用MyBatis来调用数据库中的存储过程。 新建存储过程在前面的教程中我们建立了Teacher表,我们现在有一个需求,需要知道男女老师的数量分别是多少?这个时候我们编写一个简单的存储过程。博主的环境是在My
多表联合查询在MyBatis中,时常会需要联合多张表进行联合查询,那么如果处理多张表联合查询的结果呢?下面将会讲述如何在MyBatis中进行多张表的联合查询。 一对一查询1.添加实体类Classes, Teacher Classes.java 123456789101112131415161718192021222324252627282930313233343536373839404142434
映射表字段名与实体属性名并自定义返回类型很多时候我们需要自定义一些字段的名称或者是结果的返回类型,这个时候就需要将数据表中的字段名称与实体的属性名称相对应,并且添加自定义的结果返回类型。 添加实体对象添加的对象为Student学生对象,属性名称有学生编号,学生姓名,学生密码,以及学生年龄。 123456789101112131415161718192021222324252627282930313