什么是 MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis中文官方文档地址
http://www.mybatis.org/mybatis-3/zh/index.html
JDBC回顾
相信很多人都听过和用过mybatis,mybatis的底层是jdbc,所以学习mybatis之前我们先来回顾一下jdbc的用法。操作数据库首先需要有一个数据库,为了简单,我们使用sqlite数据库。先来看一下依赖:
为了方便,我们将数据库建在项目目录下面,新建一个db文件:
新建文件的时候,可以直接新建一个文本文档,然后修改名字为test.db即可,然后用Navicat打开,就是一个sqlite数据库:
新建一个t_user表,表结构如下:
这样数据库就准备好了,sqlite是非常方便的数据库。在Java中新建几个常量,作为连接数据的参数:
注意用户名密码直接写空字符串即可。然后写一个公共方法获取数据库连接:
上面有两步,加载驱动,连接数据库,最后返回一个连接。下面写一个新增方法,首先定义一个sql:
然后定义新增方法:
下面定义一个查询方法,首先定义查询sql:
然后定义查询方法:
上面都是很简单的我们熟悉的jdbc的写法,也是java的基础。我们来执行看一下结果:
结果:
数据库中也添加成功了一条记录:
JDBC的缺点
我们亲自回顾了一次jdbc,用jdbc操作数据库虽然是基础,但是实际开发当中几乎没人用jdbc,是因为直接使用jdbc存在以下缺点:
1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
2、 Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
3、 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
4、使用对象传入参数和把返回结果封装成对象都需要自己手动硬编码
正因为以上的问题,所以我们在项目中通俗的做法是使用开源的稳定的orm框架,比如hibernate和mybatis。hibernate对jdbc进行了非常严格的封装,使用不太灵活,性能方面也不如mybatis。因此mybatis成为了现在互联网项目的一般标准用法。
我们下面将会一步步学习mybatis的用法,然后对mybatis的源码进行分析,看mybatis如何对jdbc进行封装,最后我们来徒手写一个简单版的mybatis,来体会一下自己写框架的快感!
代码地址:https://gitee.com/blueses/mybatis-demo 01
我们的交流基地,“JAVA互联网技术交流:789650498”欢迎小伙伴们一起来交流:
网友评论