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);
            }
        }
    
    }
  • 相关阅读:
    jquery 实例
    jQuery总结或者锋利的jQuery笔记一
    前端 ajax 改写登录界面
    使用mybatisgenerator 辅助工具逆向工程
    一个ssm综合小案例-商品订单管理-第二天
    一个ssm综合小案例-商品订单管理-第一天
    一个ssm综合小案例-商品订单管理----写在前面
    delphi Ribbon 111
    Delphi Excel导入 的通用程序
    1. 微信公众号申请
  • 原文地址:https://www.cnblogs.com/huey/p/5235618.html
Copyright © 2011-2022 走看看