发布于2021-03-10 18:08 阅读(708) 评论(0) 点赞(17) 收藏(1)
目录
在说mybatis之前,我们先来说一下ORM框架。
ORM(object Relational Mapping)对象关系映射,将程序中的一个对象与表中的一行数据一一对应。
如果我们要使用JDBC来完成ORM的操作,想一想我们需要多少操作?
首先导入关于操作数据库的类,然后建立连接,输入sql语句对数据库进行操作,如果是查询操作,我们还需要建立对象去接受查到的数据,最后关闭连接,返回相应值。
听起来不麻烦,但是当数据特别多的时候,这样的操作就显得复杂,所以我们需要一个框架来帮我们简化一下工程。
mybatis就是这样的框架,他省略了很多底层的操作,我们只需要配置相应文件,写出sql语句,剩下的mybatis都会帮我们解决。
MyBatis 是一个基于 Java 的持久层框架。MyBatis 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO),它消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
我们有一个mybatis-config.xml作配置文件,它配置了mybatis的运行环境信息以及相关的数据库连接信息/
下面是mybatis-cofig.xml的简略配置信息。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--默认使用哪个环境-->
<environments default="development">
<environment id="development">
<!--事务控制类型-->
<transactionManager type="JDBC"/>
<!-- 数据库连接的参数-->
<dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc.url"/>
<property name="username" value="root"/>
<property name="password" value="xxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--注册Mapper文件所在的位置-->
<mapper resource="xxxMapper.xml"/>
</mappers>
</configuration>
加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
即上述的Mapper.xml文件
下面是简略的Mapper.xml文件的配置信息。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.daoInterface.UserDao">
<select id="xxx(接口方法)" resultType="com.bean.User(返回类型)">
SELECT id,.....
FROM t_user
WHERE id = #{arg0}(接口方法的参数,arg0代表第一个参数)
</select>
</mapper>
通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。
由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build("加载的配置文件的信息");
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = sqlSession.getiMapper(UserDao.class);
User user = mapper.xxx(接口中的方法)(参数);
a.用户程序调用mybatis接口层api(即Mapper接口中的方法)
b.SqlSession通过调用api的Statement ID找到对应的MappedStatement对象
c.通过Executor(负责动态SQL的生成和查询缓存的维护)将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象
d.JDBC执行sql。
e.借助 MappedStatement 中的结果映射关系,将返回结果转化成 HashMap、JavaBean 等存储结构并返回。
SqlSessionFactoryBuilder这个类的作用就是为了创建SqlSessionFactory的,它会根据配置或者代码来生成 SqlSessionFactory,采用的是分步构建的 Builder 模式。
SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像,依靠它来生成 SqlSession,使用的是工厂模式。
一个既可以发送 SQL 执行返回结果,也可以获取 Mapper 的接口。
MyBatis 新设计存在的组件,它由一个 Java 接口和 XML 文件(或注解)构成,需要给出对应的 SQL 和映射规则。它负责发送 SQL 去执行,并返回结果。
原文链接:https://www.cnblogs.com/lisuhang/p/14449424.html
作者:小可爱们
链接:http://www.javaheidong.com/blog/article/112344/eab5082092fdcade044c/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!