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);
            }
        }
    
    }
  • 相关阅读:
    通过docker创建并使用apache容器
    Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程
    Neo4j视频教程 Neo4j 图数据库视频教程
    两台centos之间传送文件
    Spring mvc整合freemarker详解
    C#异步编程
    chrome使用技巧(看了定不让你失望)
    Redis可视化工具 Redis Desktop Manager
    Mongodb数据查询 | Mongodb
    PowerDesigner最基础的使用方法入门学习
  • 原文地址:https://www.cnblogs.com/huey/p/5235618.html
Copyright © 2011-2022 走看看