Mybatis-Mybatis介绍以及mybatis-config.xml配置

一、什么是Mybatis

  • mybatis:是一种简化和实现了java数据化持久层(persistence layer)的开源框架,它抽象了大量的JDBC冗余代码,并提供了一个简单的API和数据交互方式。

  • mybatis的背景:MyBatis的前身是iBATIS,iBATIS于2002年由ClintonBegin创建。MyBatis3是iBATIS的全新设计,支持注解和Mapper(映射器)。

    • MyBatis流行的主要原因在于它的简单性和易使用性。
  • 在Java应用程序中,数据持久化层涉及到的工作有:

    • 将从数据库查询到的数据生成所需要的Java对象;
    • 将Java对象中的数据通SQL持久化到数据库中。
    • 优点:MyBatis通过抽象底层的JDBC代码,自动化SQL结果集产生Java对象、Java对象的数据持久化数据库中的过程使得对SQL的使用变得容易。
  • iBATIS一词来源于internet和abatis的组合,是一个在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。

    • ibatis的官网 http://ibatis.apache.org/ 进去官网会看到下面提示:

      • apache ibatis is retired at the apache software foundation (2010/06/16)

      • the original project team has moved to mybatis hosted at google code. see http://www.mybatis.org/ for more.

      • 然而http://www.mybatis.org/这个地址一直处于打不开状态…

      • 但是我们最终是可以在github中找到mybatis的相关下载的:

        mybatis在github中的地址
        		https://github.com/mybatis/mybatis-3
        		最新版本的mybatis的下载地址
        		https://github.com/mybatis/mybatis-3/releases
        		doc文档
        		http://www.mybatis.org/mybatis-3/
        
  • Mybatis的优点:

    • 1。消除了大量的JDBC冗余代码:java通过JDBC的API操作关系型数据库,需要大量的底层代码完成操作数据库,mybatis简化了JDBC的大量底层代码

      例如:
      第一步:在SQLMapper映射文件(自定义类型接口的xml文件)中完成对sql语句的配置
          <insert id="insertStudent" parameterType="Student"> 
              INSERT INTO STUDENTS(ID,NAME,EMAIL) 
              VALUES(#{
             id},#{
             name},#{
             email}) 
          </insert> 
      
      id:和自定义接口中的方法名保持一致
      parameterType:指定自定义pojo类
      
      第二步:创建一个StudentMapper接口
              public interface StudentMapper{
              
                  void insertStudent(Student student); 
              } 
              
      第三步:编写Java代码完成插入操作
              SqlSession session = getSqlSessionFactory().openSession(); 
      
              StudentMapper mapper = session.getMapper(StudentMapper.class); 
      
              mapper.insertStudent(student); 
      
    • 2.较低的学习曲线:MyBatis能够流行的首要原因之一在于它学习和使用起来非常简单,开发人员很熟悉Java和SQL,他们会发现MyBatis入门非常简单。

    • 3.更好的和数据库协同工作:Mybtis相比于其他框架(例如:hibernate),更加灵活(开发人员自主修改sql语句)

      • hibernate:需要将实体类以及属性完全映射到数据表,使得修改比较麻烦
    • 4.Mybtis接受sql语句:

      • 类比于其他ORM框架,例如hibernate,hibernate框架推荐让框架自动生成sql语句,这样以来就不能完全利用到数据库的一些特有的特性。
      • mybatis框架则是推荐程序自己控制sql语句,这样就可以充分利用数据库特有的特性并且可以准备自定义的查询。
    • 5.提供了与Spring框架的集成支持

      • MyBatis提供了与Spring框架的集成支持,这将进一步简化MyBatis的使用
    • 6.提供了与第三方缓存类库的集成支持

      • MyBatis有内建的SqlSession级别的缓存机制,用于缓存Select语句查询出来的结果。除此之外,MyBatis提供了与多种第三方缓存类库的集成支持,如EHCache,OSCache等。
    • 7.Mybatis支持数据库连接池,不必为每次连接创建数据库连接

    • 8.Mybatis提供了内建的缓存机制,在SqlSession级别1提供了对Sql查询结果的缓存

二、使用Mybatis

  • 数据库表对应的实体类pojo类:动态代理技术反射去创建newInstance对应对象,需要无参构造器

  • Mybatis的jar包:

    • Mybatis核心jar包:mybatis-3.x.x.jar
      • E:\杰普实训\第二阶段\mybatis\10-12 Day1\day1\mybatis-3.4.6(包含mybatis的使用文档mybatis-3.4.6.pdf)
    • 其他依赖jar包:log4j.jar,ojdbc8.jar等等(在下载的压缩包中可以找到)
      • E:\杰普实训\第二阶段\mybatis\10-12 Day1\day1\mybatis-3.4.6\lib
  • Mybatis的框架的xml配置文档:

    • 第一种:Mybatis框架文档:包含重要的两项environments,mappers标签

      • 名字固定:mybatis-config.xml

      • 位置一般在java project项目的src下面

         
         
        
        两种dtd约束路径
        	1.下载dtd约束文件到本地
        	"-//mybatis.org//DTD Config 3.0//EN"(在preferences中XML catalog中添加约束),需要添加到eclipse中,指定mybatis-3-config.dtd文件
        
        	2.通过url访问服务器上的dtd约束
        	"http://mybatis.org/dtd/mybatis-3-config.dtd"
        
        <configuration> 
          <typeAliases> 
            <typeAlias alias="Student" type="com.briup.pojo.Student" /> 
          typeAliases> 
            
          
          
          <environments default="development"> 
            <environment id="development">
              <transaction Manager type="JDBC" />
               <dataSource type="POOLED">
                
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 
                <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" /> 
                <property name="username" value="test" /> 
                <property name="password" value="test" /> 
              dataSource> 
            environment> 
          environments> 
          
          
          <mappers> 
            <mapper resource="com/briup/pojo/StudentMapper.xml" /> 
          mappers> 
        configuration> 
        
    • 第二种:Mybatis的映射文件:映射接口名.xml对应自定义接口

      • 名称固定:映射接口名.xml

      • 位置:一般放在和映射接口同一包下

      • 对应实体类的表的数据库操作sql语句(增,删,改,查)

        • #{}预编译处理: Mybatis在处理#{}时,会将sql中的#{}替换为?号 ,防治SQL注入。
          • 比如说网页表单提交将参数,网页链接存在参数传递,后台并没有对用户的输入进行过滤,导致用户的输入直接被SQL解释器执行。SQL注入的产生条件有参数传递参数值带入数据库查询并且执行

你可能感兴趣的:(Mybatis,Mybatis介绍,Mybatis动态代理)