• MyBatis(3.2.3)


    MyBatis-Spring is a submodule of the MyBatis framework, which provides seamless integration with the popular dependency injection framework, Spring.

    1. If you are using the Maven build tool, you can configure Mybatis' spring dependency as follows:

    <properties>
        <spring.version>3.2.3.RELEASE</spring.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.6</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.14.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
        </dependency>
    </dependencies>
    View Code

    2. The JavaBean:

    package com.huey.hello.mybatis.beans;
    
    import java.io.Serializable;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Department implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        private int did;
        private String deptName;
        private String address;
        private String tel;
    }

    3. The mapper interface:

    package com.huey.hello.mybatis.mapper;
    
    import com.huey.hello.mybatis.beans.Department;
    
    public interface DepartmentMapper {
        
        public int insertDepartment(Department department);
        
        public Department getDepartmentById(int did);
        
    }

    4. Configure mapped statements in Mapper XML files:

    <?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">
    
    <!--注意:此处的命名空间是 DepartmentMapper 的全限定类名-->
    <mapper namespace="com.huey.hello.mybatis.mapper.DepartmentMapper">
    
        <cache size="512"></cache>
    
        <!-- ResultMaps 被用来将 SQL SELECT 语句的结果集映射到 JavaBean 的属性中 -->
        <resultMap type="Department" id="deptMap">
            <!-- 映射主键 -->
            <id property="did" column="did" />
            <!-- 映射普通字段 -->
            <result property="deptName" column="dept_name"/>
            <result property="address" column="address"/>
            <result property="tel" column="tel"/>
        </resultMap>
    
        <!-- 添加部门记录 -->
        <!-- id 名称需要与 DepartmentMapper 中的方法签名一致 -->
        <!-- Department 这一别名在 mybatis-config.xml 中配置 -->
        <insert id="insertDepartment" parameterType="Department" useGeneratedKeys="true" keyProperty="did">
            insert into department(dept_name, address, tel)
            values(#{deptName}, #{address}, #{tel})
        </insert>
        
        <!-- 根据 ID 查询部门记录 -->
        <select id="getDepartmentById" parameterType="int" resultMap="deptMap" useCache="true">
            select * from department where did=#{did}
        </select>
    
    </mapper>

    5. Configure the mybatis-config.xml:

    <?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>
    
        <!-- 设置别名 -->
        <typeAliases>
            <typeAlias type="com.huey.hello.mybatis.beans.Department" alias="Department" />
            <typeAlias type="com.huey.hello.mybatis.beans.Employee" alias="Employee" />
        </typeAliases>
    
        <!-- mapper 对应的 xml 配置文件 -->
        <mappers>
            <package name="com.huey.hello.mybatis.mapper"/>
        </mappers>
        
    </configuration>

    6. jdbc.properties

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost/mybatis
    jdbc.username=root
    jdbc.password=root

    7. Configure  the 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:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
        <!-- 启动@AspectJ支持 -->
        <aop:aspectj-autoproxy proxy-target-class="true" />
        <!-- 自动扫描指定包及其子包下的所有Bean类 -->
        <context:component-scan base-package="com.huey.hello.mybatis" />
        <!-- 将配置值具体化到一个属性文件中,并且使用属性文件的key名作为占位符 -->
        <context:property-placeholder location="classpath:jdbc.properties" />
    
        <!-- 配置数据源  -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>
    
        <!-- 配置 SqlSessionFactory 交由 Spring 管理 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:mybatis-config.xml" />
        </bean>
        
        <!-- 配置 SqlSession -->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
            <constructor-arg index="0" ref="sqlSessionFactory" />
        </bean>
    
        <!-- 扫描并注册包中的映射器  Mapper 接口 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.huey.hello.mybatis.mapper" />
        </bean>
    
        <!-- 将事务交由 Spring 管理 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!-- 启用 Spring @Transactional 注解 -->
        <tx:annotation-driven />
    
    </beans>

    8. The business logic

    package com.huey.hello.mybatis.serv;
    
    import javax.annotation.Resource;
    
    import org.apache.ibatis.session.SqlSession;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.huey.hello.mybatis.beans.Department;
    import com.huey.hello.mybatis.mapper.DepartmentMapper;
    
    @Service("deptService")
    @Transactional
    public class DepartmentService {
        
        @Resource
        SqlSession sqlSession;
        
        public int createDepartment(Department department) {
            int result = 0;
            DepartmentMapper deptMapper = sqlSession.getMapper(DepartmentMapper.class);
            result = deptMapper.insertDepartment(department);
            return result;
        }
        
        public Department getDepartmentById(int did) {
            Department department = null;
            DepartmentMapper deptMapper = sqlSession.getMapper(DepartmentMapper.class);
            department = deptMapper.getDepartmentById(did);
            return department;
        }
    
    }

    9. AbstractJUnit4SpringContextTests

    package com.huey.hello.spring;
    
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
    
    @ContextConfiguration(locations={"classpath*:applicationContext*.xml"})
    public class SpringTest extends AbstractJUnit4SpringContextTests {
    
    }

    10. JUnit Test:

    package com.huey.hello.mybatis.serv;
    
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import com.huey.hello.mybatis.beans.Department;
    import com.huey.hello.spring.SpringTest;
    
    public class DepartmentServiceTest extends SpringTest {
        
        @Autowired
        DepartmentService deptService;
        
        @Test
        public void testCreateDepartment() {
            Department department = new Department(0, "组织部", "XX 路 ZZ 号", "011-99999");
            deptService.createDepartment(department);
            System.out.println(department);
        }
        
        @Test
        public void testGetDepartmentById() throws Exception {
            int did = 1001;
            Department department = deptService.getDepartmentById(did);
            if (department != null) {
                System.out.println(department);
            }
        }
    
    }
  • 相关阅读:
    【UOJ 53】线段树区间修改
    【洛谷 1057】传球游戏
    【洛谷 2430】严酷的训练
    【UOJ 51】最接近神的人
    【洛谷 1908】逆序对
    【UOJ 50】树状数组2
    Kafka单机安装
    Linux查看磁盘使用情况命令
    CentOS7查看和关闭防火墙
    Kafka学习(三)——Java工具类、Springboot集成批量消费、SparkStreaming集成
  • 原文地址:https://www.cnblogs.com/huey/p/5235618.html
Copyright © 2020-2023  润新知