Mybatis(一)Mybatis相关概念

1.1 传统的JDBC实现mysql

public static void main(String[] args) {
Connection connetion = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;sql

try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
connetion = DriverManager.getConnetion("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root","root");
//定义SQL语句
String sql = "Select * from user where username = ?";
//获取预处理statement
preparedStatement = connection.preparedStatement(sql);
preparedStatement.setString(1,"zbc");
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String userName = resultSet.getString("username");
//封装
User user = new User();
user.setId(id);
user.setUserName(userName)
}
}catch (Excetption e) {
e.printStatckTrace();
} finally {
//释放资源
}
}数据库

1.2 存在的问题与分析
数据库配置存在硬编码问题
解决方法:经过配置文件解决配置信息硬编码问题mybatis

频繁建立释放数据库链接
解决方法:经过链接池解决频繁建立释放问题app

SQl语句、参数、获取结果集参数均存在硬编码问题
解决方法:经过配置文件解决SQL语句和参数问题框架

返回结果须要手动封装,较为繁琐
解决方法:经过反射解决集合ide

1.3 Mybatis简介 官网
  Mybatis是一款优秀的基于ORM的半自动轻量级持久框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎全部的JDBC代码和手动设置参数以及获取结果集。Mybatis可使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。性能

1.4 工做原理
加载mybatis-config.xml配置文件(数据源,mapper文件以及相关的其余文件),
经过SqlSessionFactoryBuilder.build()(用建造者模式)来解析mybatis-config.xml文件,解析的数据保存到configuration对象中
SqlSessionFactory经过configuration对象来建立SqlSession,而后经过SqlSession进行CURD和事务提交的操做。(建立sqlSession的过程其实就是根据configuration中的配置来建立对应的类,而后返回建立的sqlSession对象)
1.5 Mybatis优缺点
优势
a. 简单易学
mybatis自己就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,经过文档和源代码,能够比较彻底的掌握它的设计思路和实现。
b. 灵活
mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。经过sql基本上能够实现咱们不使用数据访问框架能够实现的全部功能,或许更多。
c. 解除sql与程序代码的耦合
经过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提升了可维护性。
缺点
a. 编写SQL语句时工做量很大,尤为是字段多、关联表多时,更是如此。
b. SQL语句依赖于数据库,致使数据库移植性差,不能更换数据库。
c. 框架仍是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,可是整个底层数据库查询实际仍是要本身写的,工做量也比较大,并且不太容易适应快速数据库修改。
1.6 Mybatis与Hibernate
  Hibernate是基于ORM的全自动框架,对象/关系映射能力强,不须要开发人员本身编写SQL语句(同时也不能对SQL语句进行优化);Mybatis是基于ORM半自动的,能够严格的控制SQL执行性能,灵活度高。单元测试

相关文章
相关标签/搜索