Java知识点学习(第14天)

Mybatis的优缺点?

优点:

  1. 基于SQL语句编程,相当灵活,不会对程序或数据库的现有设计造成影响,SQL写在XML中,解除了SQL和程序的耦合,便于统一管理,同时支持编写动态SQL,可重用。
  2. 与JDBC相比,减少了大量的代码量,消除了JDBC大量的冗余代码,不需要手动开关连接。
  3. 很好的与各种数据库兼容(因为Mybatis使用JDBC来连接数据库,所以只要JDBC支持的数据库Mybatis都支持)。
  4. 能够与Spring很好的集成。
  5. 提供映射标签,支持对象与数据库的ORM字段关系映射,提供对象关系映射。

缺点:

  1. SQL 语句的编写工作量较大,对开发人员的SQL语句功底有有定的要求。
  2. SQL语句依赖于数据库,导致数据库移植性性差,不能随意更换数据库.

#{}和${}的区别是什么?

  • #{}是预编译处理,是占位符,${}是字符串替换、是拼接符。
  • Mybatis在处理#{}时,会将sql中的#{}替换成?号,调用PrepareStatement来赋值。
  • Mybatis在处理${} 时,会将sql中的 ${}替换为变量的值,调用Statement来赋值。
  • 使用#{}可以有效防止SQL注入,提供系统的安全性。

索引的基本原理

索引用来快速地寻找那些具有特定值的记录,如果没有索引,一般说执行查询时需要遍历整张表。索引的原理就是把无序的数据变成有序的数据。

  1. 把创建了索引的列的内容进行排序。
  2. 对排序结果生成倒排表。
  3. 在倒排表内容上拼接上数据地址链。
  4. 在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据。

索引设计的原则

总体的设计原则是查询更快、占用空间更小。

  1. 适合索引的列是出现在where子句,或者连接子句中指定的列。
  2. 基数较小的表,索引效果较差,没有必要在此列建立索引。
  3. 使用短索引,如果对长字符串进行索引,应该指定一个前缀长度,这样能够节省大量的索引空间,如果搜索词超过了索引的前缀长度,则使用索引排除不匹配的行,然后检查其余行是否可能匹配。
  4. 不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。
  5. 定义有外键的数据列一定要建立索引。
  6. 更新频繁字段不适合创建索引。
  7. 若是不能有效区分数据的列不合适做索引列(如性别,男女未知,最多就三种情况,区分度很小)。
  8. 尽量的拓展索引而不是新增索引。如果表中已经有了a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
  9. 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
  10. 对于定义为text、image和bit的数据类型的列不要建立索引。

你可能感兴趣的:(Java知识点,java)