Mybatis框架的搭建和基本使用方法
1.1MyBatis的下载
最新yBatis可以在github官网上下载:
https://github.com/mybatis/mybatis-3
1.2 Mybatis Jar包
1.3MyBatis工作原理
1.4Mybatis的整个的执行流程
MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。
2.第一个Mybatis程序
2.1、建立java项目
2.2、建立student表(id,name,age,socre)
2.3、定义实体Student
2.4、定义接口IStudentDao
2.5.1、定义主配置文件
在pdf中搜索”mybatis-3-config.dtd”关键字,即可找到映射文件的约束。
2.5.2主配置文件详解
1)注册DB连接四要素属性文件
2)指定实体类全限定性类名的别名
对于实体类的全限定性类名的别名指定方式,一般合用<package/>方式,这样做的好处是会将该包中所有实体类的简单类型名指定为别名,写法简单方便
<!--<typeAlias type="com.jet.bean.Student" alias="Student" /> -->
<!--将指定包中所有类的简单类型类名当做其别名 -->
<package name="com.jet.bean" />
3)指定映射文件
方式一:
<mappers>
<mapper resource="com/jet/dao/StudentMapper.xml"/>
</mappers>
方式二:
<mappers>
<mapper class="com.jet.dao.IStudentDao"/>
</mappers>
此方式,需要满足以下几个要求:
1) 映射文件名要与dao接口名称相同
2) 映射文件要与接口在同一包中
3) 映射文件中的<mapper />的namespace属性值为dao接口的全类名
<mapper namespace="com.jet.dao.IStudentDao ">
<insert id="insertStu" >
Insert into student(name,age,score)values(#{name},#{age},#{score});
</insert>
</mapper>
方式三:
当映射方件较多时,也可以使用如下形式。其中package的name属性指定映射文件所放的包。
<mappers>
<package name="com.jet.dao"/>
</mappers>
这种方式的使用需要满足以下几个条件:
1) dao使用mapper动态代理实现
2) 映射文件名要与dao接口名称相同
3) 映射文件名与接口在同一包中
4) 映射文件中的<mapper />的namespace属性值为dao接口的全类名
2.5.3从属性文件中读取jdbc的相关连接信息——创建主属性文件
2.6、定义映射文件mapper.xml,名称无所谓,一般放在接口下面,在pdf中查找”mabatis-3-mapper”dtd约束
2.7.1、定义Dao的实现类
2.7.2、 API详解
Dao中需要通过SqlSession对象来操作DB,而SqlSession对象的创建,需要其工厂对象SqlSessionFactory。SqlSessionFactory对象需要通过其构建器对象SqlSessionFactoryBuilder的build()方法,在加载了主配置文件的输入流对象后创建。
(1) Resource类
用于读取资源文件,其有很多方法通过加载并解析资源文件,返回不同类型的IO流对象。
(2) SqlSessionFactoryBuilder类
SqlSessionFactory的创建,需要使用SqlSessionFactoryBuilder对的build()方法。
(3) SqlSessionFactory
SqlSessionFactory接口对象是一个重量级对象(系统开销大的对象),是线程安全的,所以一个应用只需要一个该对象即可。创建SqlSession需要使用SqlSessionFactory接口的openSession()方法。
(4)SqlSession接口
SqlSession接口用于持久化操作。一个SqlSession对应着一次数据库会话,一次会话以SqlSession对象的创建开始,以SqlSession对象的关闭结束。
SqlSession接口对象是线程不安全的,所以每次数据库会话结束前,需要马上调用其close()方法,将其关闭。再次需要会话,再次创建。
而在关闭时会判断当前SqlSession是否被提交;若没有被提交,则会执行回滚。若已被提交,则直接将SqlSession关闭。
2.7.8、源码分析
1、输入流的关闭Resources
2、SqlSession的创建
3、增删改查的执行
4、SqlSession的commit()
5、Sqsession的close
2.8、定义测试类
2.9、添加日志控件文件
2.10、使用junit运行测试类,成功插入数据到数据库
Mybatis框架的搭建和基本使用方法的更多相关文章
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试
这一部分的主要目的是 配置spring-service.xml 也就是配置spring 并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+M ...
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)
用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 搭建目录环境和依赖) 四:在\resources\spring 下面 ...
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...
- Spring+SpringMvc+Mybatis框架集成搭建教程
一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建四:配置springmvc
在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试的基础上 继续进行springmvc的配置 一:配置完善web.xml文件
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)
引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一 的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一:建立MAVEN Web项目
一:创建maven web项目er
- MyBatis框架的搭建
前言:MyBatis框架的前身是iBatis,本身是Apache的一个开源项目. MyBatis框架是一个半自动的orm映射框架,是实体类和sql语句之间建立映射关系,sql语句写在单独的配置文件中, ...
- MyBatis 框架的搭建和配置
MyBatis是支持定制化SQL.存储过程以及高级映射的优秀持久层框架.MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.MyBatis可以对配置和原生Map使用简单的xml或 ...
随机推荐
- (转)C#中各种集合类比较
数组(Array)的不足(即:集合与数组的区别) 1. 数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是 ...
- c#使用GDI+简单绘图
private void button2_Click(object sender, EventArgs e) { Bitmap image = new Bitmap(200, 200); Graphi ...
- MSSQL 自定义函数详解
自定义函数分为:标量值函数或表值函数 如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数.可以使用多条 Transact-SQL 语句定义标量值函数. 如果 RETURNS 子句指定 ...
- python concurrent.futures
python因为其全局解释器锁GIL而无法通过线程实现真正的平行计算.这个论断我们不展开,但是有个概念我们要说明,IO密集型 vs. 计算密集型. IO密集型:读取文件,读取网络套接字频繁. 计算密集 ...
- 初学者易上手的SSH-struts2 05拦截器与自定义拦截器
因为自己对于struts2也不是很了解,这章将是struts2的最后一章了.那么这一章主要介绍的是拦截器以及怎么样来自定义一个拦截器. struts2的拦截器位于struts2-core(核心包)-& ...
- Java爬虫
作为一位Java爬虫的初学者,分享一下自己的心得.所用到的jar包 org.codehaus.jettison.jar jsoup-1.7.3.jar个人认为爬虫的实现机制:获取Docume对象-&g ...
- jQuery和AngularJS的区别
这篇文章主要介绍了jQuery和AngularJS的区别浅析,本文着重讲解一个熟悉jQuery开的程序员如何应对AngularJS中的一些编程思想的转变,需要的朋友可以参考下 最近一直在研究ang ...
- win10 uwp 如何让一个集合按照需要的顺序进行排序
虽然这是 C# 的技术,但是我是用在 uwp ,于是就把标题写这个名.有一天,我的小伙伴让我优化一个列表.这个列表是 ListView 他绑定了一个 ObservableCollection 所以需要 ...
- java四大会话技术
未经作者允许,不得转载 第一cookie技术 常用方法: new Cookie(),构造一个cookie getName() ,获取cookie的名字 getValue () ,取到具体cookie的 ...
- ASP.NET Core 网站发布到Linux服务器(转)
出处;ASP.NET Core 网站发布到Linux服务器 长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台 ...