Spring-mybatis


回顾Spring-mybatis                             与                                       mybatis的结构比较

对比

 Spring-mybatis 三大改变(准确是2个改变  1.覆盖配置   2.改写方法)

1.使用Spring方式实现了原来写在mybatis里面获取SqlSession的工具类(自定义的)

2.可以使用Spring方式实现mybatis-config.xml里面的配置(也可以两者互通)

3.可以使用Spring方式实现接口的方法(也可使用注解)   [然后方法里面去获得对应的mapper]

相关依赖

       <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.2.0.RELEASEversion>
        dependency>


        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>Test_885scope>
        dependency>

        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.9.4version>
            <scope>runtimescope>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.47version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.3version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>5.3.18version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>2.0.6version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.12version>
        dependency>

静态资源过滤

    dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
            resource>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
            resource>
        resources>
    build>

改写方法1

xml


      <bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
          <property name="username" value="root"/>
          <property name="password" value="my7shig69l>A"/>
      bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource88" />

        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/>
    bean>

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

        <constructor-arg index="0" ref="sqlSessionFactory"/>

    bean>

    <bean id="userMapper_01" class="com.ljm.dao.UserMappermpl">
        <property name="sqlSession" ref="sqlSession"/>
    bean>

实现类

public class UserMappermpl implements UserMapper{
    //原来所有操作都使用sqlSession执行,现在使用SqlSessionTemplate;
    private SqlSessionTemplate sqlSession;

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List select_user(){
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return  mapper.select_user();

    }
}

测试

    public void test02() {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean("userMapper_01",UserMapper.class);
        for (User user : userMapper.select_user()) {
            System.out.println(user);
        }

    }

改写方法2(本质与方法一相同,不过是简化了步骤)

xml

      <bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
          <property name="username" value="root"/>
          <property name="password" value="my7shig69l>A"/>
      bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource88" />

        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/>
    bean>

   <bean id="userMapper_02" class="com.ljm.dao.UserMappermpl02">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    bean>

实现类

public class UserMappermpl02 extends SqlSessionDaoSupport implements UserMapper{
//    SqlSessionDaoSupport这个类帮忙写了之前的代码
public int insert_user(User user){
    return getSqlSession().getMapper(UserMapper.class).insert_user(user);
}
}

测试

    public void test03() {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean("userMapper_02",UserMapper.class);
        for (User user : userMapper.select_user()) {
            System.out.println(user);
        }
}

Spring 相关配置(见i上面id=sqlSessionFactory)

指定mybatis-config.xml文件

指定UserMapper.xml文件