Java数据持久层框架 MyBatis之背景知识二
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java数据持久层框架 MyBatis之背景知识二,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6561字,纯文字阅读大概需要10分钟。
内容图文
![Java数据持久层框架 MyBatis之背景知识二](/upload/InfoBanner/zyjiaocheng/1333/09a61d2aad924fce822bc4ed9210d29e.jpg)
![技术分享](/upload/getfiles/default/2022/11/9/20221109024908216.jpg)
二、历史变迁
![技术分享](/upload/getfiles/default/2022/11/9/20221109024908351.jpg)
![技术分享](/upload/getfiles/default/2022/11/9/20221109024908724.jpg)
![技术分享](/upload/getfiles/default/2022/11/9/20221109024908849.jpg)
1.SqlSessionFactoryBuilder
每一个MyBatis的应用程序的入口是SqlSessionFactoryBuilder
它的作用是通过XML配置文件创建Configuration对象(当然也可以在程序中自行创建),
然后通过build方法创建SqlSessionFactory对象。
ps:没有必要每次访问Mybatis就创建一次SqlSessionFactoryBuilder,通常的做法是创建一个全局的对象就可以了。
示例程序如下:
![技术分享](/img/jia.gif)
![技术分享](/img/jian.gif)
1 private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder; 2 private static SqlSessionFactory sqlSessionFactory; 3 private static void init() throws IOException { 4 String resource = "mybatis-config.xml"; 5 Reader reader = Resources.getResourceAsReader(resource); 6 sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); 7 sqlSessionFactory = sqlSessionFactoryBuilder.build(reader); 8 }
2.SqlSessionFactory
SqlSessionFactory对象由SqlSessionFactoryBuilder创建。
它的主要功能是创建SqlSession对象,
和SqlSessionFactoryBuilder对象一样,没有必要每次访问Mybatis就创建一次SqlSessionFactory,通常的做法是创建一个全局的对象就可以了。
SqlSessionFactory对象一个必要的属性是Configuration对象,它是保存Mybatis全局配置的一个配置对象,通常由SqlSessionFactoryBuilder从XML配置文件创建。
这里给出一个简单的示例:
![技术分享](/img/jia.gif)
![技术分享](/img/jian.gif)
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的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html
3.SqlSession
SqlSession对象的主要功能是完成一次数据库的访问和结果的映射,它类似于数据库的session概念,由于不是线程安全的,所以SqlSession对象的作用域需限制方法内。SqlSession的默认实现类是DefaultSqlSession,它有两个必须配置的属性:Configuration和Executor。
SqlSession对数据库的操作都是通过Executor来完成的。
到目前为止,我们看到的都是mybatis的流程,我们的应用程序在什么地方插入到这个流程中并获得我们想要的结果呢?就是SqlSession这里。
SqlSession有一个重要的方法getMapper,顾名思义,这个方式是用来获取Mapper对象的。
什么是Mapper对象?根据Mybatis的官方手册,应用程序除了要初始并启动Mybatis之外,还需要定义一些接口,接口里定义访问数据库的方法,存放接口的包路径下需要放置同名的XML配置文件。SqlSession的getMapper方法是联系应用程序和Mybatis纽带,应用程序访问getMapper时,Mybatis会根据传入的接口类型和对应的XML配置文件生成一个代理对象,这个代理对象就叫Mapper对象。
应用程序获得Mapper对象后,就应该通过这个Mapper对象来访问Mybatis的SqlSession对象,这样就达到里插入到Mybatis流程的目的。
示例代码如下:
![技术分享](/img/jia.gif)
![技术分享](/img/jian.gif)
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);
对应的接口:
![技术分享](/img/jia.gif)
![技术分享](/img/jian.gif)
1 public interface UserDao { 2 public List<UserDto> queryUsers(UserDto user) throws Exception; 3 }
对应的配置文件
![技术分享](/img/jia.gif)
![技术分享](/img/jian.gif)
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 >
4.Executor
Executor对象在创建Configuration对象的时候创建,并且缓存在Configuration对象里。
Executor对象的主要功能是调用StatementHandler访问数据库,并将查询结果存入缓存中(如果配置了缓存的话)。
5.StatementHandler
StatementHandler是真正访问数据库的地方,并调用ResultSetHandler处理查询结果。
6.ResultSetHandler
处理查询结果。
原文:http://www.cnblogs.com/haimishasha/p/5516516.html
内容总结
以上是互联网集市为您收集整理的Java数据持久层框架 MyBatis之背景知识二全部内容,希望文章能够帮你解决Java数据持久层框架 MyBatis之背景知识二所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。