Mybatis到底是啥呢?

  • Mybatis是一个半ORM(对象关系映射)框架,它封装了JDBC,加载驱动,连接创建等操作,使得开发者只需要关注SQL的编写,可以对SQL进行复杂优化,灵活度高;(Hibernate根据实体类来生成对应的SQL导致无法进行SQL调优,而Mybatis则是开发者手动编写SQL
  • Mybatis有XML,注解两种方式来配置映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集;
  • 通过XML或者注解的方式将要执行的各种Statement配置,并且通过Entity实体类和Statement的SQL动态参数进行映射生成最终执行的SQL,最终Mbatis框架执行SQL并且将结果映射为Java对象返回;(简单来说就是从执行SQL到返回ResultSet的过程)

Mybatis的优点与缺点

优点:

  • 开发者编写SQL,灵活性高,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML或者使用注解,解除了SQL与程序代码的耦合,便于统一管理;提供XML标签支持编写动态SQL语句,且可以重用
  • 与原生JDBC操作相比,减少了百分之五十以上的代码量,消除了JDBC大量冗余代码,不需要再手动开关连接
  • 能够很好的集成Spring,并且兼容各种数据库

缺点:

  • SQL语句的编写工作量大,尤其是字段多,关联表时,对开发者的SQL功底比较有考验
  • SQL语句依赖于数据库导致移植性差,不能随意更换数据库

#{}与${}的区别?

  • ${}是字符串替换,#{}是预处理
  • Mybatis在处理${}的时候,是把${}直接替换成变量的值,而处理#{}的时候,会对SQL进行预处理,将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值,有效的防止了SQL注入,提高系统安全

未完待续。。。。。。。

//TODO
//TODO
//TODO