zoukankan      html  css  js  c++  java
  • 33Mybatis------Mapper的编写

    Mapper编写的三种方法
     
    传统的做法:
    接口实现类继承SqlSessionDaoSupport

    使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件

    1、  在sqlMapConfig.xml中配置mapper.xml的位置

    <mappers>

      <mapper resource="mapper.xml文件的地址" />

    <mapper resource="mapper.xml文件的地址" />

    </mappers>

    2、  定义mapper接口

     

    3、  mapper的实现类集成SqlSessionDaoSupport

     

    mapper方法中可以this.getSqlSession()进行数据增删改查。

    4、  spring 配置

    <bean id=" " class="mapper接口的实现">

         <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>

        </bean>

     sqlSession的配置需要两个:一个是dataSource。一个是SqlMapper.xml:

    思路:我们配置Mapper时是需要SqlSeeion的,那么SqlSession怎么来,用SqlSessionFactroy来得到。所以mapper的实现类要继承SqlSessionDaoSupport

    然后就可以用this.getSqlSession()来得到SqlSession来增删改查。。

    使用org.mybatis.spring.mapper.MapperFactoryBean

    1、  在sqlMapConfig.xml中配置mapper.xml的位置

    <mappers>

      <mapper resource="mapper.xml文件的地址" />

    <mapper resource="mapper.xml文件的地址" />

    </mappers>

    2、  定义mapper接口

    注意

    1、mapper.xml中的namespace为mapper接口的地址

    2、mapper接口中的方法名和mapper.xml中的定义的statementid保持一致

    3、  Spring中定义

    <bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean">

         <property name="mapperInterface"   value="mapper接口地址" /> 

           <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 

        </bean>

     

    使用mapper扫描器

    1、  mapper.xml文件编写,

    注意:

    mapper.xml中的namespace为mapper接口的地址

    mapper接口中的方法名和mapper.xml中的定义的statementid保持一致

     

    2、  定义mapper接口

    注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录

    3、  配置mapper扫描器

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

           <property name="basePackage" value="mapper接口包地址"></property>

           <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

        </bean>

    4、 使用扫描器后从spring容器中获取mapper的实现对象

    扫描器将接口通过代理方法生成实现对象,要spring容器中自动注册,名称为mapper 接口的名称。

    如果将mapper.xml和mapper接口的名称保持一致则不用在sqlMapConfig.xml中进行配置

    <context:property-placeholder location="classpath:db.properties"/>
    
    <!-- 数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
           <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!-- 开发阶段建议最大连接数据尽量少,够用即可 -->
            <property name="maxActive" value="${jdbc.maxActive}"/>
            <property name="maxIdle" value="${jdbc.maxIdle}"/>
    </bean>
    
    
    <!-- 配置SqlSessionFactory
    从spring和mybatis的整合包中获取
     -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 加载数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置SqlMapConfig.xml -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/>
    </bean>
    
    <!-- 使用MapperFactoryBean 生成mapper的代理对象
    在mybatis和spring的整合包中
    -->
    
    
    <!--配置 mapper自动扫描器
     bean名称就是mapper类型(首字母小写)
     -->
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!-- 配置扫描包路径 ,如果扫描多个包路径,中间使用半角逗号分隔-->
       <property name="basePackage" value="yycg.base.dao.mapper"/>
        <!-- 配置SqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    
    
    </beans>
    classpath:mybatis/SqlMapConfig.xml"用包扫描的话,因为xml文件和接口在同一个文件夹下面,所以SqlMapConfig.xml里面可以不写子xml的地址。
  • 相关阅读:
    MyBatis(十):MyBatis懒加载 延迟加载详解
    MyBatis(九):MyBatis类型处理器(TypeHandler)详解
    MyBatis(八):MyBatis插件机制详解
    MyBatis(七):MyBatis缓存详解(一级缓存/二级缓存)
    MyBatis(六):MyBatis复杂映射
    内省概念及详解(MethodDescriptor、PropertyDescriptor)
    反射概念及详解
    sublime3 + chrome + xdebug调试php代码
    php的文件系统和程序执行函数整理
    php编程趣事:乘法口诀、百钱买百鸡、过桥等问题
  • 原文地址:https://www.cnblogs.com/shenxiaoquan/p/5956976.html
Copyright © 2011-2022 走看看