MyBatis特点?
1.轻量级自身不依赖其他任何JAR,但需要提供JDBC实现
2.灵活,更加适用于需求变化频繁的互联网应用
3.学习成本低,相比ORM框架而言,掌握MyBatis的使用是很轻松的
4.与JDBC相比,减少了50%以上的代码量
5.最简单的持久化框架、小巧简单易学
6.SQL代码从程序代码中彻底分离出来,可重用
7.提供XML标签,支持编写动态SQL
8.提供映射标签,支持对象与数据库的ORM字段关系映射
MyBstis的缺点?
MyBatis在结构中的位置?
MyBatis处在DAO(数据访问对象)的位置,回顾一下DAO的工作职责:
连接数据库
接收输入数据
拼接并执行SQL
解析并返回结果
MyBatis可以做什么?
使用JDBC完成DAO层存在以下问题
每次操作都需要手动的创建连接,最后关闭连接
对于重复代码通常开发者都会进行封装,但是由于每个人的编码风格不同导致封装的代码也没有固定的套路
MyBatis将数据库连接相关的参数放到配置XML中并封装了创建连接的代码
频繁的创建和销毁连接
由于数据库连接使用的是TCP长连接,并发量大的系统中,这样的方式会导致数据库连接资源耗尽
MyBatis本身实现了连接池,可以解决这一问题,当然后续会更换其他更好的连接池
接受参数拼接SQL语句并执行
每一条SQL语句都是直接写在代码中(硬编码),如果后期需求发生变化,则需要修改源码中的SQL,然后重新编译,测试.....
MyBatis将SQL语句从代码中剥离到Mapper.xml映射文件中
解析结果
JDBC返回的是ResultSet,必须手动将其映射到一个个的对象中,同样是重复度很高的代码;并且存在硬编码问题
MyBatis实现了入参映射到SQL参数,以及结果集映射到POJO对象。