美文网首页
131、【JavaEE】【SSM】Spring + MyBati

131、【JavaEE】【SSM】Spring + MyBati

作者: yscyber | 来源:发表于2021-11-01 02:45 被阅读0次

    1、概述

    • Spring 与 MyBatis 整合的思路是将 MyBatis 所产生的对象交予 Spring 管理。

    • 将 MyBatis 接口代理对象的创建权交给 Spring 管理。

    2、Spring 与 MyBatis 整合步骤

    1、引入 Maven 依赖

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.3.8</version>
            </dependency>
    
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.7</version>
            </dependency>
    
            <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.7</version>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.6</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.23</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.3.8</version>
                <scope>test</scope>
            </dependency>
    

    2、在src/main/resources目录下,创建jdbc.properties配置文件

    jdbc_driver = com.mysql.cj.jdbc.Driver
    jdbc_url = jdbc:mysql://127.0.0.1:3306/test_1?characterEncoding=UTF-8
    jdbc_username = root
    jdbc_password =
    

    3、在src/main/resources目录下,创建 MyBatis 核心配置文件mybatis.xml

    在与 Spring 整合的过程中,MyBatis 的核心配置文件如果没有特殊配置的情况下是可以舍弃的,因为相关的配置会在 Spring 核心配置文件中完成,比如:数据源配置(相当于将数据源对象交予 Spring 容器进行管理)等。

    如果 MyBatis 中存在特殊配置,也可以在 Spring 核心配置文件中“引用” MyBatis 核心配置文件。

    <?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">
    
    <configuration>
    
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
    
        <typeAliases>
            <package name="com.yscyber.ssm.pojo"/>
        </typeAliases>
        
    </configuration>
    

    4、在src/main/resources目录下,创建 Spring 核心配置文件applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    
        <context:component-scan base-package="com.yscyber.ssm.service"/>
    
        <!-- 引入 jdbc.properties -->
        <context:property-placeholder location="classpath:jdbc.properties"/>
    
        <!-- 配置数据源(交予 Spring 容器管理) -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${jdbc_driver}"/>
            <property name="url" value="${jdbc_url}"/>
            <property name="username" value="${jdbc_username}"/>
            <property name="password" value="${jdbc_password}"/>
        </bean>
    
        <!--  配置 SqlSessionFactory  -->
        <!-- id 一般为 sqlSessionFactory -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis.xml"/>
        </bean>
    
        <!-- 配置 Mapper 扫描 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.yscyber.ssm.repo"/>
        </bean>
    
    </beans>
    

    5、编写 Java 代码

    CREATE TABLE xxx(
      id INT NOT NULL,
      name VARCHAR(3) NOT NULL
    );
    
    package com.yscyber.ssm.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @ToString
    public class MyObj {
    
        private Integer id;
    
        private String name;
    
    }
    
    package com.yscyber.ssm.repo;
    
    import com.yscyber.ssm.pojo.MyObj;
    
    import java.util.List;
    
    public interface MyObjRepo {
    
        List<MyObj> listAllMyObjs();
    
    }
    
    <?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">
    
    <mapper namespace="com.yscyber.ssm.repo.MyObjRepo">
        <select id="listAllMyObjs" resultType="MyObj" >
            SELECT id,name
            FROM xxx
        </select>
    </mapper>
    
    package com.yscyber.ssm.service;
    
    import com.yscyber.ssm.pojo.MyObj;
    
    import java.util.List;
    
    public interface MyObjService {
    
        List<MyObj> listAllObjs();
    
    }
    
    package com.yscyber.ssm.service.impl;
    
    import com.yscyber.ssm.pojo.MyObj;
    import com.yscyber.ssm.repo.MyObjRepo;
    import com.yscyber.ssm.service.MyObjService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class MyObjServiceImpl implements MyObjService {
    
        @Autowired
        private MyObjRepo myObjRepo;
    
        @Override
        public List<MyObj> listAllObjs() {
            return myObjRepo.listAllMyObjs();
        }
    
    }
    
    package com.yscyber.ssm;
    
    import com.yscyber.ssm.pojo.MyObj;
    import com.yscyber.ssm.service.MyObjService;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import java.util.List;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:applicationContext.xml"})
    public class MyTest {
    
        @Autowired
        private MyObjService myObjService;
    
        @Test
        public void test1() {
            List<MyObj> myObjList = myObjService.listAllObjs();
            for (MyObj myObj : myObjList) {
                System.out.println(myObj);
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:131、【JavaEE】【SSM】Spring + MyBati

          本文链接:https://www.haomeiwen.com/subject/nyctoltx.html