什么是mybatis 为什么要使用my batis

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是mybatis 为什么要使用my batis相关的知识,希望对你有一定的参考价值。

1、定义
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

2、使用原因
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

3、总体流程
(1)加载配置并初始化
触发条件:加载配置文件
处理过程:将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求
触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。
参考技术A

    MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。

    需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。

    MyBatis的前身是ibatis,但是在配置sql的语法上有明显的区别,并且spring目前的版本封装mybatis,至于mybatis-spring.jar文件也是mybatis团队复杂开发的jar包,用于和spring整合。之前ibatis的源码托管方是apache,而mybatis是google。

参考技术B 估计题主是新手,回答的太抽象不便于理解。
可以认为,mybatis是让你写的java程序对数据库进行增删改查的一个工具。
java对数据库进行增删改查的工具很多,较之于其他工具,mybatis容易上手,而且开发起来也很简单,同时与spring的组合也非常容易。
更功利一点讲为什么要使用mybatis:目前各大互联网公司多是使用mybatis。

My-Batis...

<?xml version="1.0" encoding="UTF-8" ?>
<!--文档类型,头文件-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--根节点,XMl只能有一个-->
<configuration>
    <!--一个environments有N个environment-->
    <typeAliases>
        <package name="cn.bdqn.entity"></package>
    </typeAliases>
    <environments default="development">

        <environment id="development">
            <!--
           transactionManager:JDBC保证事务的
           update
           delete
           事务分类:JDBC:编程式事务
                       xxx.beginTransaction()

                       tx.commit()
                       tx.rollback()
                     配置式事务
                     JDBC|MANAGED
                     区别

           -->
            <transactionManager type="JDBC"></transactionManager>
            <!--
               POOLED:MyBatis内置的连接池
               c3p0连接池
                       POOLED 、UNPOOLED  、JNDI
           -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///blog"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>

        </environment>
    </environments>

<mappers>
<mapper resource="cn/bdqn/dao/DeptMappr.xml"></mapper>
        </mappers>
        </configuration>
技术分享

 

二.小配置

技术分享
<?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">
<!--namespace:
     命名空间:区分不同空间下的同名SQLID
     A: findlAll
     B:  findAll
    -->
<mapper namespace="cn.bdqn.dao.IDeptDao">
    <!--SQL标签
      id:唯一锁定到SQL标识
      paramenterType:SQL语句的入参  可以省略
      resultType:
      增删除操作:不能 写
      查询:单个实体的类型
    -->
    <select id="getAll"  resultType="Dept">
  /*SQL文:SQL语句*/
    SELECT * FROM  bloginfo
    </select>
    <select id="getid"  resultType="Dept">
        /*SQL文:SQL语句*/
        SELECT * FROM  bloginfo WHERE blogId=#{blogId}
    </select>
</mapper>
技术分享

三.jar包

 

技术分享
   <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>


        <!--mysql  jar包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
技术分享

 

四.实体类

     public class StudentInfo {

     private Integer stuId;

     private String stuName;

     private Integer  stuAge;

     private Date stuDate;

}

五.更新POM.xml文件中build节点

 <build>

    <resources>

      <resource>

        <directory>src/main/java</directory>

        <includes>

          <include>**/*.xml</include>

        </includes>

      </resource>

    </resources>

  </build>

 

六.测试类 

InputStream is=Resources.getResourcesAsStream(path);

SessionFactory factory=new SessionFactoryBuilder().build(is);

SqlSession session=factory.openSession();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<!--文档类型,头文件-->
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--根节点,XMl只能有一个-->
<configuration>
<!--一个environments有N个environment-->
<typeAliases>
<package name="cn.bdqn.entity"></package>
</typeAliases>
<environments default="development">

<environment id="development">
<!--
transactionManager:JDBC保证事务的
update
delete
事务分类:JDBC:编程式事务
xxx.beginTransaction()

tx.commit()
tx.rollback()
配置式事务
JDBC|MANAGED
区别

-->
<transactionManager type="JDBC"></transactionManager>
<!--
POOLED:MyBatis内置的连接池
c3p0连接池
POOLED 、UNPOOLED 、JNDI
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///blog"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>

</environment>
</environments>

<mappers>
<mapper resource="cn/bdqn/dao/DeptMappr.xml"></mapper>
</mappers>
</configuration>















































以上是关于什么是mybatis 为什么要使用my batis的主要内容,如果未能解决你的问题,请参考以下文章

my batis单个变量长度最大多少

My-Batis...

java面试题_简单说明hibernateStruts2SpringspringMVCmybatis的执行流程或者原理_5_mybatis

如何使用mybatis对mysql数据库进行操作,batis的增删改查

MyBatis的逆向工程

mybatis的逆向工程