zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    
    }
  • 相关阅读:
    jmeter怎么衡量tps的值
    QPS、TPS、并发用户数、吞吐量关系
    PPAPI插件开发指南
    WebRTC手记之WebRtcVideoEngine2模块
    WebRTC手记Channel概念
    WebRTC手记之本地音频采集
    WebRTC手记之本地视频采集
    WebRTC手记之框架与接口
    WebRTC手记之初探
    Chromium的GPU进程启动流程
  • 原文地址:https://www.cnblogs.com/huey/p/5235618.html
Copyright © 2011-2022 走看看