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框架的搭建和基本使用方法的更多相关文章

  1. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

    这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+M ...

  2. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)

    用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 搭建目录环境和依赖) 四:在\resources\spring 下面 ...

  3. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  4. Spring+SpringMvc+Mybatis框架集成搭建教程

    一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...

  5. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建四:配置springmvc

    在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试的基础上 继续进行springmvc的配置 一:配置完善web.xml文件

  6. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)

    引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一   的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...

  7. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一:建立MAVEN Web项目

    一:创建maven web项目er

  8. MyBatis框架的搭建

    前言:MyBatis框架的前身是iBatis,本身是Apache的一个开源项目. MyBatis框架是一个半自动的orm映射框架,是实体类和sql语句之间建立映射关系,sql语句写在单独的配置文件中, ...

  9. MyBatis 框架的搭建和配置

    MyBatis是支持定制化SQL.存储过程以及高级映射的优秀持久层框架.MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.MyBatis可以对配置和原生Map使用简单的xml或 ...

随机推荐

  1. python之路第二篇(基础篇)

    入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...

  2. windown快速安装xgboost

    记录xgboost的快速安装方式,该方式适合pyhton3.5/3.6版本. 系统: win10 64bit python版本:3.6 1. 下载xgboost编译好的whl包 下载路径为:http: ...

  3. Crossin 8-3;8-4

    8-3文件打开模式:r:只读模式.默认w:只写模式.会先清空文件a:追加写入模式,在文件末尾写入,不可读r+:打开一个文件用于读写.文件指针将会放在文件的开头,原文件内容不会清空b:二进制模式,与前面 ...

  4. 网时|云计算的集群技术对于传统IDC而言,又有哪些提高呢?

    当传统的IDC产品已经不足以满足现在科技的飞速发展时,云计算便应运而生.咱们暂且不论云计算在其他领域的贡献,仅IDC来讲,云计算的集群技术对于传统IDC而言,又有哪些提高呢? 1.服务类型 常用的传统 ...

  5. 程序员 各种PDF格式电子书--免费网盘资源

    Java <设计模式之禅(完整高清版)> 链接:http://pan.baidu.com/s/1bo7noMb 密码:5kve  <重构_改善既有代码的设计> 链接:http: ...

  6. python apschedule安装使用与源码分析

    我们的项目中用apschedule作为核心定时调度模块.所以对apschedule进行了一些调查和源码级的分析. 1.为什么选择apschedule? 听信了一句话,apschedule之于pytho ...

  7. ajax请求service报405错误 - 【服务器不允许的方法】

    产生原因:web服务器找不到service方法处理请求. 检查方向: ① service方法名称写错 ② service方法参数类型与标准不一致 ③ service方法异常,返回值类型和标准不一致 ④ ...

  8. 【计算机网络】应用层(一) HTTP

      HTTP报文 HTTP报文是HTTP应用程序间发送的数据块,它由三部分组成:起始行(start line),首部(header)和主体(body),如下图所示:   从分类上,报文又可以分为请求报 ...

  9. 项目总结一:响应式之CSS3 媒体查询

    1.<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scala ...

  10. 详解 $().css('width')和$().width()的区别

    在本次项目开发中,经常用jquery获取高度和宽度并且动态加载,有时候用$().css('width')或$().width()这两个方法获取宽度并设置,但是有时候出现获取不到的情况,查阅资料后发现他 ...