Mybatis有什么用

技术Mybatis有什么用这篇文章将为大家详细讲解有关Mybatis有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介MyBatis的前身叫iBatis,本是apache的一个

本文将详细解释Mybatis的使用。边肖觉得挺实用的,就分享给大家参考。希望你看完这篇文章能有所收获。

简介

MyBatis的前身是iBatis,最初是apache的开源项目。2010年,这个项目从apache软件基金会转移到谷歌代码,并改名为MyBatis。MyBatis是一个优秀的持久层框架,支持普通的SQL查询、存储过程和高级映射。MyBatis消除了几乎所有JDBC代码和参数的手动设置以及结果集的检索。MyBatis使用简单的XML或注释进行配置和原始映射,并将接口和Java POJO(Plan Old Java Objects)映射到数据库中的记录。

Mybatis的功能架构分为三层(图片借用百度百科):

1)API接口层:提供给外部使用的接口API,开发人员可以通过这些本地API对数据库进行操作。接口层收到调用请求后,会调用数据处理层完成具体的数据处理。

2)数据处理层:负责具体的SQL搜索、SQL分析、SQL执行和执行结果映射等。它的主要目的是根据被调用的请求完成一个数据库操作。

3)基础支持层:负责最基础的功能支持,包括连接管理、事务管理、配置加载和缓存处理。这些都是常见的东西,它们被提取出来作为最基本的组成部分。为上层数据处理层提供最基本的支持。

Mybatis有什么用

快速入门

Mybatis有什么用

Mybatis总体流程图

SqlSessionFactoryBuilder

MyBatis的每个应用的入口都是SqlSessionFactoryBuilder,用来通过XML配置文件创建Configuration对象(当然也可以在程序中自己创建),然后通过build方法创建SqlSessionFactory对象。没有必要每次访问Mybatis都创建SqlSessionFactoryBuilder。通常的做法是创建一个全局对象。示例过程如下:

[java]景观平面图

privatedstatisqlsessionfactorybuilders qlssessionfactorybuilder;

privatedstatisqlsessionfactory;

privatedstationinit()throwSioException {

string source=' my batis-config . XML ';

reader reader=resources . getresourceasreader(资源);

sqlSessionFactoryBuilder=newnb

sp;SqlSessionFactoryBuilder();  

  •     sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);  

  • }  

  • SqlSessionFactory

    SqlSessionFactory对象由SqlSessionFactoryBuilder创建。它的主要功能是创建SqlSession对象,和SqlSessionFactoryBuilder对象一样,没有必要每次访问Mybatis就创建一次SqlSessionFactory,通常的做法是创建一个全局的对象就可以了。SqlSessionFactory对象一个必要的属性是Configuration对象,它是保存Mybatis全局配置的一个配置对象,通常由SqlSessionFactoryBuilder从XML配置文件创建。这里给出一个简单的示例:

    [html] view plain copy

    1. <?xml version="1.0" encoding="UTF-8" ?>  

    2. <!DOCTYPE configuration PUBLIC   

    3.     "-//mybatis.org//DTD Config 3.0//EN"  

    4.     "http://mybatis.org/dtd/mybatis-3-config.dtd">  

    5. <configuration>  

    6.     <!-- 配置别名 -->  

    7.     <typeAliases>  

    8.         <typeAlias type="org.iMybatis.abc.dao.UserDao" alias="UserDao" />  

    9.         <typeAlias type="org.iMybatis.abc.dto.UserDto" alias="UserDto" />  

    10.     </typeAliases>  

    11.        

    12.     <!-- 配置环境变量 -->  

    13.     <environments default="development">  

    14.         <environment id="development">  

    15.             <transactionManager type="JDBC" />  

    16.             <dataSource type="POOLED">  

    17.                 <property name="driver" value="com.mysql.jdbc.Driver" />  

    18.                 <property name="url" value="jdbc:mysql://127.0.0.1:3306/iMybatis?characterEncoding=GBK" />  

    19.                 <property name="username" value="iMybatis" />  

    20.                 <property name="password" value="iMybatis" />  

    21.             </dataSource>  

    22.         </environment>  

    23.     </environments>  

    24.       

    25.     <!-- 配置mappers -->  

    26.     <mappers>  

    27.         <mapper resource="org/iMybatis/abc/dao/UserDao.xml" />  

    28.     </mappers>  

    29.       

    30. </configuration>  

    要注意XML头部的声明,需要用来验证XML文档正确性。typeAliases 元素是包含所有typeAlias(别名)的列表,别名用来替换完整类名,这样在需要完整类名的地方就可以用别名来代替。environment元素体中包含对事务管理和连接池的环境配置。mappers元素是包含所有mapper(映射器)的列表,这些mapper的XML文件包含SQL代码和映射定义信息。当然,在XML配置文件中还有很多可以配置的,上面的示例指出的则是最关键的部分,其他配置请参考Mybatis的官方文档。

    SqlSession

    SqlSession对象的主要功能是完成一次数据库的访问和结果的映射,它类似于数据库的session概念,由于不是线程安全的,所以SqlSession对象的作用域需限制方法内。SqlSession的默认实现类是DefaultSqlSession,它有两个必须配置的属性:Configuration和Executor。Configuration前文已经描述这里不再多说。SqlSession对数据库的操作都是通过Executor来完成的,Executor的具体功能在下一小节在描述。

    到目前为止,我们看到的都是mybatis的流程,我们的应用程序在什么地方插入到这个流程中并获得我们想要的结果呢?就是SqlSession这里。SqlSession有一个重要的方法getMapper,顾名思义,这个方式是用来获取Mapper对象的。什么是Mapper对象?根据Mybatis的官方手册,应用程序除了要初始并启动Mybatis之外,还需要定义一些接口,接口里定义访问数据库的方法,存放接口的包路径下需要放置同名的XML配置文件。SqlSession的getMapper方法是联系应用程序和Mybatis纽带,应用程序访问getMapper时,Mybatis会根据传入的接口类型和对应的XML配置文件生成一个代理对象,这个代理对象就叫Mapper对象。应用程序获得Mapper对象后,就应该通过这个Mapper对象来访问Mybatis的SqlSession对象,这样就达到里插入到Mybatis流程的目的。示例代码如下:

    [java] view plain copy

    1. SqlSession session= sqlSessionFactory.openSession();  

    2. UserDao userDao = session.getMapper(UserDao.class);  

    3. UserDto user = new UserDto();  

    4. user.setUsername("iMybatis");  

    5. List<UserDto> users = userDao.queryUsers(user);  

    对应的接口:

    [java] view plain copy

    1. public interface UserDao {  

    2.     public List<UserDto> queryUsers(UserDto user) throws Exception;  

    3. }  

    对应的配置文件:

    [html] view plain copy

    1. <?xml version="1.0" encoding="UTF-8" ?>  

    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  

    3. <mapper namespace="org.iMybatis.abc.dao.UserDao">  

    4.     <select id="queryUsers" parameterType="UserDto" resultType="UserDto"  

    5.         useCache="false">  

    6.         <![CDATA[ 

    7.         select * from t_user t where t.username = #{username} 

    8.         ]]>  

    9.     </select>  

    10. </mapper>  

    Executor

    Executor对象在创建Configuration对象的时候创建,并且缓存在Configuration对象里。Executor对象的主要功能是调用StatementHandler访问数据库,并将查询结果存入缓存中(如果配置了缓存的话)。

    StatementHandler

    StatementHandler是真正访问数据库的地方,并调用ResultSetHandler处理查询结果。

    ResultSetHandler

    处理查询结果

    关于“Mybatis有什么用”这篇文章就分享到这里了,希望

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116459.html

    (0)

    相关推荐

    • 互联网中有哪些开源UML工具

      技术互联网中有哪些开源UML工具这篇文章主要介绍了互联网中有哪些开源UML工具,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.StarUMLStarUM

      攻略 2021年12月11日
    • 租用香港云服务器的五大好处云服务器香港

      技术租用香港云服务器的五大好处云服务器香港几乎所有其他IDC服务商都在其提供的产品列表中使用“云”一词。那么究竟什么是香港云?为什么它被认为如此非常合适部署业务,以至于成为不少用户建站时的首选?下面详细说明了使用该服务的

      礼包 2021年12月15日
    • 什么是Linux内核空间与用户空间

      技术什么是Linux内核空间与用户空间今天就跟大家聊聊有关什么是Linux内核空间与用户空间,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。本文以 32 位系统为例

      攻略 2021年10月22日
    • 张僧繇怎么读,张僧繇的点睛之笔指的是什么

      技术张僧繇怎么读,张僧繇的点睛之笔指的是什么张僧繇是梁朝著名的画师。有一次,皇帝命令他在金陵安乐寺的墙壁上画龙。不一会儿,两条栩栩如生的龙就出现在墙壁上了。这时皇帝发现这两条龙都没有眼睛,就问张僧繇这是为什么。张僧繇回答

      生活 2021年10月30日
    • 弯月眉,形容身材好腰细的优美句子

      技术弯月眉,形容身材好腰细的优美句子形容女子腰的句子弯月眉。
      1、看她折纤腰以微步,呈皓腕于轻纱。
      眸含春水清波流盼,头上倭堕髻斜插碧玉龙凤钗。
      香娇玉嫩秀靥艳比花娇,指如削葱根口如含朱丹,一颦一笑动人心魂。
      2、一头长

      生活 2021年10月26日
    • Android10开发者有哪些常见问题

      技术Android10开发者有哪些常见问题本篇内容介绍了“Android10开发者有哪些常见问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

      攻略 2021年11月10日