春 - 春の統合総務MyBatisの

1、MyBatisの-Spring統合

公式サイト:のhttp://mybatis.org/spring/zh/index.html

MyBatisのスプリングは、あなたがシームレスにSpringとコードMyBatisのを統合するのに役立ちます。

マッパーとマッパーを作成SqlSessionし、Beanに注入。

必要なバージョンに対応しています。

  1. パッケージの構造を初めて目

  2. ではpom.xml、対応するファイルの依存関係を導入

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>spring02</artifactId>
            <groupId>com.jiang</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>spring04</artifactId>
    
        <dependencies>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <!--Spring-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.1.10.RELEASE</version>
            </dependency>
            <!--Spring jdbc(new)-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.1.10.RELEASE</version>
            </dependency>
            <!--aop aspectjweaver-->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.4</version>
            </dependency>
            <!--mybatis-spring-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.2</version>
            </dependency>
    
        </dependencies>
    
        <!-- 如果xml在java文件下,就要设置资源过滤-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </project>
  3. 書き込みUserMapperインタフェース

    package com.jiang.mapper;
    
    import com.jiang.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
        List<User> getUserList();
    }
    
  4. 書き込みUserエンティティクラス

    package com.jiang.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
        private int id;
        private String name;
        private String pwd;
    }
    
    
  5. 書き込みUserMapper.xmlファイル

    <?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">
    <!--namespace=绑定一个对应的Dao/Mapper接口-->
    <mapper namespace="com.jiang.mapper.UserMapper">
    
        <!--select查询语句-->
        <select id="getUserList" resultType="com.jiang.pojo.User">
           select * from mybatis.user
       </select>
    
    </mapper>
  6. コードの書かれた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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--整合mybatis-->
    
        <!--1.数据源配置-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
        </bean>
    
                <!--2.注入sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
             <!--别名-->
            <property name="typeAliases" value="com.jiang.pojo.User"/>
            <!--扫描包-->
            <property name="mapperLocations" value="classpath:com/jiang/xml/*.xml"/>
        </bean>
    
             <!--3.创建sqlSession-->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg index="0" ref="sqlSessionFactory"/>
        </bean>
    
              <!--4.放入bean-->
        <bean id="userMapperImpl" class="com.jiang.mapper.impl.UserMapperImpl">
            <property name="sqlSession" ref="sqlSession"/>
        </bean>
    
    </beans>
  7. applicationContext.xmlステップ3の準備が完了すると、書き込みを行うUserMapperインタフェースの実装クラスをUserMapperImpl、そして最後にステップ4を行います

    package com.jiang.mapper.impl;
    
    import com.jiang.pojo.User;
    import com.jiang.mapper.UserMapper;
    import org.mybatis.spring.SqlSessionTemplate;
    
    import java.util.List;
    //实现类
    public class UserMapperImpl implements UserMapper {
        //注入sqlSession:   Spring管理了
        private SqlSessionTemplate sqlSession;
    
    
        public void setSqlSession(SqlSessionTemplate sqlSession) {
            this.sqlSession = sqlSession;
        }
    
        @Override
        public List<User> getUserList() {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return mapper.getUserList();
        }
    }
    

2、事務の制御

以下の操作は、上記のすべての操作がで成功していることを前提としています!

  1. 付けUserMapperの追加と削除、ユーザーが近づい増加する中で

    package com.jiang.mapper;
    
    import com.jiang.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
        List<User> getUserList();
    
        //添加用户
        int addUser(User user);
    
    
        //删除用户
        int deleteUser(int id);
    }
    
  2. UserMapperImpl書き換え方法

    package com.jiang.mapper.impl;
    
    import com.jiang.pojo.User;
    import com.jiang.mapper.UserMapper;
    import org.mybatis.spring.SqlSessionTemplate;
    
    import java.util.List;
    //实现类
    public class UserMapperImpl implements UserMapper {
        //注入sqlSession:   Spring管理了
        private SqlSessionTemplate sqlSession;
    
    
        public void setSqlSession(SqlSessionTemplate sqlSession) {
            this.sqlSession = sqlSession;
        }
    //查询用户
        @Override
        public List<User> getUserList() {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return mapper.getUserList();
        }
    //添加用户
        @Override
        public int addUser(User user) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return mapper.addUser(user);
        }
    //删除用户
        @Override
        public int deleteUser(int id) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return mapper.deleteUser(id);
        }
    }
    
  3. ではUserMapper.xmlSQLで書きます

    <?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">
            <!--namespace=绑定一个对应的Dao/Mapper接口-->
    <mapper namespace="com.jiang.mapper.UserMapper">
    
    <!--select查询语句-->
    <select id="getUserList" resultType="com.jiang.pojo.User">
           select * from mybatis.user
       </select>
    
    <!--insert添加语句-->
    <insert id="addUser" parameterType="User">
            insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
        </insert>
    
    
    <!--delete删除语句-->
    <delete id="deleteUser" parameterType="int">
            delete from user where id=#{id}
        </delete>
    </mapper>
  4. applicationContext.xml追加トランザクションとヘッダAOPのサポート、および統合事務をファイル!

     <!--添加事务和AOP支持-->
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:aop="http://www.springframework.org/schema/aop"  
            http://www.springframework.org/schema/tx
            https://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd">
    
    
    
           <!--整合事务-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <constructor-arg ref="dataSource" />
        </bean>
    
        <!--事务配置增强,一定要检查pom.xml文件中有没有aop aspectjweaver 织入包-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!--propagation 事务的传播特性 默认REQUIRED-->
                <!-- * 控制所有方法-->
                <tx:method name="*" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
    
        <aop:config>
            <!--切入点-->
            <aop:pointcut id="txPointCut" expression="execution(* com.jiang.mapper.*.*(..))"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
        </aop:config>
    
    </beans>
  5. テスト

    @Test
        public void test3(){
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserMapper userMapperImpl = (UserMapper) context.getBean("userMapperImpl");
            userMapperImpl.addUser(new User(4,"嘻嘻","898798"));
    
        }

    テストは成功です!

    注意事項:

    テストクラスの場合:

    UserMapper userMapperImpl = (UserMapper) context.getBean("userMapperImpl");

    読みます:

    UserMapperImpl userMapperImpl = (UserMapperImpl) context.getBean("userMapperImpl");

    これは、型変換の例外が報告されます。java.lang.ClassCastException: com.sun.proxy.$Proxy8 cannot be cast to com.jiang.mapper.impl.UserMapperImpl

    ます。https://blog.csdn.net/yinzn2011/article/details/46455973理由は、参照ブログの説明します

おすすめ

転載: www.cnblogs.com/godles/p/12368939.html