zoukankan      html  css  js  c++  java
  • 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运行测试类,成功插入数据到数据库

  • 相关阅读:
    CentOS下date命令
    spring-data-redis --简单的用spring-data-redis
    Unable to Rebuild JIRA Index
    JIRA Cannot Start Due to 'unable to clean the cache directory: /opt/jira/plugins/.osgi-plugins/felix'
    Java compiler level does not match the version of the installed Java project facet.
    maven scope含义的说明
    maven 下载 源码和javadoc命令
    Redis 入门第一发
    mysql 1194 – Table ‘tbl_video_info’ is marked as crashed and should be repaired 解决方法
    tomcat用redis做session共享
  • 原文地址:https://www.cnblogs.com/fangjet/p/7639606.html
Copyright © 2011-2022 走看看