Mybatis_Spring統合

29072 ワード

Mybatis_Spring統合
MyBatisとSpringの2大フレームワークはすでにJavaインターネット技術の主流フレームワークの組み合わせとなっており、SpringはMyBatisの高柔軟性、構成可能、SQLの最適化などの特性に合わせて、高性能の大型サイトを完全に構築することができる.ビッグデータ量と大量のリクエストの試練に耐え、インターネットシステムで広く応用されています.
次の2つの統合手順について説明します.
統合手順
  • はpom.xmlに依存パケット
  • を追加
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatis-springartifactId>
    dependency>
    
  • xmlプロファイルでデータソースを構成するデータソースを構成するにはデータが必要で、jdbcを新規作成する.propertiesファイル
    jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.user=root
    jdbc.password=root
    
    このファイル
    <context:property-placeholder location="classpath:jdbc.properties"/>
    
    の構成データソース
  • をプロファイルに導入する.
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="url" value="${jdbc.url}"/>
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="username" value="${jdbc.user}"/>
            <property name="password" value="${jdbc.password}"/>
        bean>
    
  • Spring、Mybatis全体の管理Beanを構成し、XML Mapperファイルのパス
  • を指定します.
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            
        	<property name="mapperLocations" value="classpath:/mapper/*"/>
        bean>
    

    Mapper xmlファイル(マッピングファイル)の例:
    
    
    <mapper namespace="com.lanou3g.mybatis.dao.BookDao">
        <resultMap id="book" type="com.lanou3g.mybatis.bean.Book">
        <id column="bid" property="id" />
            <result column="bname" property="bname" />
            <result column="author" property="author" />
            <result column="author_gender" property="authorGender" />
            <result column="price" property="price" />
            <result column="description" property="description" />
        <association property="bookType" javaType="com.lanou3g.mybatis.bean.BookType">
                <id column="t_id" property="id"/>
                <result column="tname" property="tname"/>
        association>
    
        resultMap>
    
        <select id="queryBooks" resultMap="book">
                    select b.*,t.*, b.id bid, t.id t_id from book b, booktype t where b.btype = t.id;
        select>
    mapper>
    
    
  • mybatis schemeを介してすべてのMapperインタフェース
  • を自動的にスキャンする
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
            http://mybatis.org/schema/mybatis-spring
            http://mybatis.org/schema/mybatis-spring.xsd">
        
        
        <mybatis:scan base-package="com.lanou3g.spring.mapper" />
    beans>
    

    Mapperインタフェースクラスの例:
    package com.training.spring.mapper;
    
    import com.training.spring.bean.Message;
    import com.training.spring.bean.MessageExample;
    import java.util.List;
    import org.apache.ibatis.annotations.Param;
    import org.springframework.stereotype.Component;
    
    @Component
    public interface MessageMapper {
        int deleteByPrimaryKey(Integer id);
        int insert(Message record);
        List<Message> selectByExample(MessageExample example);
        Message selectByPrimaryKey(Integer id);
        int updateByExampleSelective(@Param("record") Message record, @Param("example") MessageExample example);
        int updateByExample(@Param("record") Message record, @Param("example") MessageExample example);
    }
    
  • 使用テスト
  • MessageServiceImplインプリメンテーションクラスがMessageMapperインタフェースを呼び出すメソッド(継承ではないことに注意)
    package com.training.spring.serive;
    
    import com.training.spring.bean.Message;
    import com.training.spring.mapper.MessageMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    @Service
    public class MessageServiceImpl {
        @Autowired
    private MessageMapper messageMapper;
        public List<Message> queryAll(){
            return messageMapper.selectByExample(null);
        }
        public int insert(){
             Message record=new Message();
             record.setSubject("    ");
             record.setStatus(2);
            return messageMapper.insert(record);
        }
        public int testDeleteByPrimaryKey(Integer id){
           return messageMapper.deleteByPrimaryKey(id);
        }
    
    }
    
    

    上記の手順に従って、SpringのIOCコンテナからMapper操作インタフェースを直接取得し、Applicationクラスで使用することができます.
    public class Application {
        public static void main(String[] args) throws SQLException {
            // 1.    IOC  
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            // 2.       Service  (Mapper         Service  )
            MessageServiceImpl messageService = ctx.getBean(MessageServiceImpl.class);
            // 3.         
            List<Message> messageList = messageService.queryAll();
            log.info("" + messageList);
        }
    }