1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MyBatis架构图

MyBatis架构图

时间:2018-08-08 20:44:15

相关推荐

MyBatis架构图

    MyBatis 本是apache的一个开源项目iBatis, 这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。 11月迁移到Github,到5月,版本升级到了 MyBatis v3.5.7。

    Mybatis是面向sql的持久层框架,它封装了jdbc访问数据库的过程,我们开发,只需专注于sql语句本身的拼装,其它复杂的过程全部可以交给Mybatis去完成。

    MyBatis的架构,如下图所示:

1、MyBatis xml配置文件

    MyBatis的配置文件包括主配置文件、映射文件。

    其中,SqlConfig.xml是MyBatis的主配置文件,它是全局的,保存着数据库的连接信息、运行环境等。

    mapper.xml 是sql 映射文件,里面记录了对数据库进行增删改查的sql语句,映射文件需要在主配置文件SqlConfig.xml里显式的加载。

2、SqlSessionFactory会话工厂

    SqlSessionFactory是会话工厂,用来创建各种会话,它实际上一个接口,在该接口中定义了openSession的不同的加载方法,一般用单例模式来管理SqlSessionFactory,便于重复使用。

    MyBatis通过xml配置文件,来创建会话工厂。

3、SqlSession会话

    SqlSession是面向用户的,即一个用户,对应一个会话,它定义了数据库的操作方法。

    每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,因为它不是线程安全的。

    若打开了一个SqlSession,则在使用完毕后就需要关闭它。通常,把这个sqlsession.close()关闭操作,放到finally{}块里,以确保每次都能正确关闭。

4、executor执行器

    MyBatis底层自定义了Execuor执行器接口来操作数据库,它包括2个执行器:基本执行器、缓存执行器。

5、MappedStatement映射器

    MappedStatement映射器,是MyBatis定义的一个底层封装对象,它包装了xml配置信息、sql映射信息等。

    在Mapper.xml里,一个sql语句对应一个MappedStatement映射器对象,sql的id 也是MappedStatement映射器的id。

    映射器对sql执行前的输入参数类型进行包装,包括HashMap、基本类型、pojo。Executor通过MappedStatement在执行sql前,将输入的Java对象映射到sql中。我们在Java代码中通过preparedState设置参数,实际上就是进行输入参数映射,见下面代码中的步骤3)。

//1)加载数据库驱动Class.forName(JDBC_DRIVER);connection = DriverManager.getConnection(DB_URL,USER,PASS);//2)定义sql语句//String sqlString = "select username,address from user";String sqlString = "select * from user where username = ?";//3)预处理statementpreparedStatement = connection.prepareStatement(sqlString);preparedStatement.setString(1, "张三");//4)执行sql语句resultSet = preparedStatement.executeQuery();//5) 遍历查询结果集while(resultSet.next()) {System.out.println(resultSet.getString("id")+" "+resultSet.getNString("username"));}

    同样,映射器,也可以把sql执行后的输出结果进行解析,它将sql的输出结果映射到Java对象中,无论这个对象是基本类型、HashMap,还是pojo,都可以成功映射。然后把这个结果解析,返回给Executor。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。