Javaweb学习笔记(初始MyBatis)
什么是MyBatis
MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架。MyBatis框架也被称为ORM框架,所谓ORM就是为了解决面向对象与关系型数据库中数据类型不匹配的技术。通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久到关系型数据库的表中。
MyBatis下载地址为:https://github.com/mybatis/mybatis-3/releases
有3个下载,第一个是MyBatis的框架压缩包,第二个是Windows系统下MyBatis框架的源码包,第三个是Linux系统下MyBatis的框架源码包,我们下载第一个包。解压后得到:
我们需要导入mybatis-3.5.7.jar(MyBatis的核心包)与lib目录下的包(MyBatis的 依赖包)
MyBatis的工作原理
MyBatis框架在操作数据库时,经过了8个步骤:
(1)读取MyBatis配置文件mybatis-config.xmlmybatis-config.xml是MyBatis的全局配置文件,配置里MyBatis的运行环境等信息。
(2)加载映射文件Mapper.xml。Mapper.xml文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。
(3)构建会话工厂,通过MyBatis的环境等配置信息构建会话工厂,SqlSessionFactory。
(4)创建SqlSession对象,由会话工厂创建SqlSession对象,该对象中包含了执行SQL的所有方法。
(5)MyBatis底层定义了一个Executor接口来操作数据库,会根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护
(6)在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等,Mapper.xml文件中一个SQL对应一个MappdStatement对象SQL的id即使MappedStatement的id。
(7)输入参数映射,在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数定义,Executeor执行器会通过MappedStatement对象执行SQL前将输入的Java对象映射到SQL语句中。
(8)输出结果映射,在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出结果进行定义,Execute执行器会通过MappedStatement对象在执行SQL语句后,将输出结果映射至Java对象中。
MyBatis入门程序
查询客户
根据用户编号查询客户信息
(1)在MySQL数据库中创建一个名为mybatis的数据库,在此数据库中创建t_customer表,同时插入几条数据。
create database mybatis;
use mybatis;
create table t_customer(id int(32) primary key AUTO_INCREMENT,username varchar(50),jobs varchar(50),phone varchar(16));
insert into t_customer values("1",'joy','doctor','13745874578');
insert into t_customer values("2",'jack','tea