另一个ORM——MyBatis(二)
来源:互联网 发布:淘宝盗用别人3c认证 编辑:程序博客网 时间:2024/05/17 09:01
上篇博客介绍了mybatis,和一个简单的程序。这篇博客将介绍mybatis如何工作的。
一、首先,先看一下结构图:
首先,项目启动的时候读取SqlMapConfig.xml。这个全局配置文件中配置了映射文件,例如User.xml或者之后的UserMapper.xml,SqlSessionFactoryBuilder会根据这个配置创建SqlSessionFactory,顾名思义,factory是用来生产SqlSession的,SqlSession这个类就是用来和数据库打交道的。
SqlSessionFactoryBuilder类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。所以SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。因此SqlSessionFactory最佳范围是应用范围,所以考虑使用单例模式。
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳范围是请求或者方法范围,在web开发中,应该放到和一次http请求相同的范围内,一次请求对应一个SqlSeesion,响应之后就关闭它。
二、再看一下映射配置文件(User.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="test"> <select id="findUserById" parameterType="int" resultType="com.tgb.mybatis.po.User"> select * from user where userid=#{id} </select> </mapper>首先,有一个根标签,mapper,里面定义了这个mapper有哪些方法等等,在实际开发中,该配置文件就相当于dao层的编写。之后会详细介绍该配置文件更深层次的应用。
mapper标签有个属性namespace,这个唯一标识了该mapper,如果要调用该mapper的findUserById()方法,则可以这样调用:sqlSession.selectOne("test.findUserById", 1);
select标签表示了一个查询sql,当然还有insert标签、update标签、delete标签。id唯一标识了该查询方法,parameterType是指定了输入参数的类型,这里指定了int类型。resultType指定了单条记录所映射的Java对象类型。当然,还有其他的属性,例如resultMap等,这个之后会讲。
再看sql语句,#{id},#{}是一个占位符,和jdbc中的?类似。其中id表示传入参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意。
0 0
- 另一个ORM——MyBatis(二)
- 另一个ORM——MyBatis(一)
- 另一个ORM——MyBatis(三)
- 另一个ORM——MyBatis(四)
- 【Hibernate学习】 ——ORM(二)
- Hibernate核心思想—ORM机制(二)
- Hibernate核心思想—ORM机制(二)
- 【Mybatis专题】(1)ORM
- 【Mybatis】深入浅出Mybatis(二)——Mybatis的框架
- 自己动手打造ORM(二) —元数据
- ORM简介(二)
- orm-mybatis开发系列之二:一对多关联查询
- ORM学习笔记(二)
- mybatis入门(二)——mybatis开发项目五部曲
- 深入理解MyBatis(二)—MyBatis初始化
- C# ORM—Entity Framework 之Code first(代码优先)(二)
- C# ORM—Entity Framework 之Code first(代码优先)(二)
- 学习ORM框架—hibernate(二):由hibernate接口谈到我对接口的理解
- app实现热更新codepush
- WCF之前世起源
- HTTP 错误 403.14 - Forbidden( Web 服务器被配置为不列出此目录的内容。)
- 基于scikit-learn(sklearn)做分类--3.优化--保存模型
- 文件复制
- 另一个ORM——MyBatis(二)
- 定时同步数据库表(mysql+linux+crontab)
- git学习教程
- Spring MVC防止数据重复提交
- webdriver for python模拟键盘操作
- HDU 2521 反素数
- Java Annotation原理分析(四) - 实现原理分析
- 基于.NET平台常用的框架整理
- Android Studio在build的时候出现transformClassesWithDexForDebug