1、MyBatis中多个查询条件不要写1=1。遇到多个查询条件时,使用where1=1可以轻松解决我们的问题。但是这很可能会造成非常大的性能损失,因为加入“where1=1”过滤条件后,数据库系统就不能使用索引等查询优化策略,数据库系统会被迫去扫描每一行数据(即全表扫描)比较行是否满足过滤条件。当表的数据量很大时,查询速度会很慢;另外,还会有SQL注入的风险。反例:selectcount(*)fromt_rule_BookInfowhere11=1ANDtitle=#{title}ANDauthor=#{author}正例:selectcount(*)fromt_rule_BookInfotitle=#{title}ANDauthor=#{author}UPDATE操作同理,可以用tag代替1=1。2、迭代entrySet()获取Map的key和value当循环中只需要获取Map的主键key时,迭代keySet()是正确的;但是,当需要主键key和value时,迭代entrySet()是比先迭代keySet()再通过get获取value更高效的方法。反例://Mapgetsvalue反例:HashMapma??p=newHashMap<>();for(Stringkey:map.keySet()){Stringvalue=map.get(key);}正例://Map获取键值示例:HashMapma??p=newHashMap<>();for(Map.Entryentry:map.entrySet()){Stringkey=entry.getKey();Stringvalue=entry.三、使用Collection.isEmpty()检测是否为空使用Collection.size()检测是否为空逻辑上是正确的,但是使用Collection.isEmpty()使得代码的可读性更强,可以获得更好的性能;除此之外,任何Collection.isEmpty()的实现都有O(1)的时间复杂度,不需要多次循环遍历,但有些通过Collection.size()方法实现的可能是O(1)(n)反例:LinkedList