Mybatis实际上就是一个JDBC的一个简化器,通过mybatis的配置,从而消除了繁杂的jdbc代码,并且实现了数据库查询的半自动化。其主要的工作流程为:
1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。
2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory
4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。
5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。
6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。
7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。
8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。
---------------
这里要说明一下上述文件的作用以及要求:
①mybatis-config.xml文件对数据库连接的环境、密码等进行了配置,并且可以添加mapper属性,其中,一个mapper就相当于一个与特定的POJO对象所对应的数据表操作集(增删改查)。
②每一个mapper.xml文件都对应着一个数据库表以及一个POJO对象,并且数据表的属性与POJO的属性名、类型都应该一样,以便让mybatis进行类型的的自动装载,进而自动的实现对象的持久化。
③一个sqlsession就相当于原本的JDBC中的一个connector对象,通过这个sqlsession来调用mapper文件中的id属性的值来执行一次或若干次数据库操作,相当于一次execute。
④mapper文件中结构可以像这样:
<!-- 这里,id属性的值就相当于一个sql语句名,sqlsession可以可以直接通过该id查询数据库 -->
<!-- 根据uid查询一个用户信息 -->
<select id="selectUserById" parameterType="Integer"
resultType="com.mybatis.po.MyUser">
select * from user where uid = #{uid}
</select>
有多种属性标签对,如上述的<select></select>,还有<insert></insert>,<update></update>等等,详情可见官方文档。
总而言之,每一种标签对都是一种数据库的操作。可以看到还有id属性、parameterType属性,id属性就相当于JDBC中的一个sql字符串名,slqsession通过这个id值来执行这个语句。parameterType属性则是调用的时候传入值的类型。
同时还可以看到在sql语句中出现了“#{}”样式的字符,这是一个占位符,#{uid}表示这是一个外传入的参数,其属性名为uid,正好对应说明②中的与POJO属性名相同。
resultType则是返回值的类型了。
---------------------------------------------------------------
在这里插入第一个mybatis测试项目:
1)项目结构
2)mybatis-config.xml文件详情
3)测试POJO类型详情
4)测试POJO类的映射类mapper
5)POJO对应的数据库设计
--------------------------
运行图:
----------------
到此为止,第一个mybatis测试项目最基础的完成了,待更。。。。
参考文献
http://c.biancheng.net/view/4309.html mybatis学习