Mybatis开发dao的方法--Mapper代理篇

本文介绍了MyBatis中Mapper代理方式的实现方法,通过ResourceMapper接口和ResourceMapper.xml文件的配合,实现了资源数据的查询功能。展示了如何配置namespace、resultMap及SQL映射等关键元素,并提供了单元测试示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题记

上一篇介绍的是Mybatis开发dao的方法的原始dao的方式,这次就来说一下另外一种dao的实现方式即Mapper代理的方式。

代码以及实现

Mapper代理的方式有一定的规范需要遵守
我们的*Mapper.xml中的namespace要配置为ResourceMapper.java的全限定名如下:
ResourceMapper.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" >
<mapper namespace="com.pingan.hdht.dao.ResourceMapper" >
  <resultMap id="BaseResultMap" type="com.pingan.hdht.model.Resource" >
    <id column="RESOURCE_ID" property="resourceId" jdbcType="VARCHAR" />
    <result column="RESOURCE_TYPE" property="resourceType" jdbcType="VARCHAR" />
    <result column="RESOURCE_NAME" property="resourceName" jdbcType="VARCHAR" />
    <result column="RESOURCE_DESC" property="resourceDesc" jdbcType="VARCHAR" />
    <result column="RESOURCE_PATH" property="resourcePath" jdbcType="VARCHAR" />
    <result column="ENABLE" property="enable" jdbcType="SMALLINT" />
    <result column="PARENT_ID" property="parentId" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    RESOURCE_ID, RESOURCE_TYPE, RESOURCE_NAME, RESOURCE_DESC, RESOURCE_PATH, ENABLE, 
    PARENT_ID
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    select 
    <include refid="Base_Column_List" />
    from SHHD_RESOURCES
    where RESOURCE_ID = #{resourceId,jdbcType=VARCHAR}
  </select>
</mapper>

ResourceMapper

public interface ResourceMapper {


    Resource selectByPrimaryKey(String resourceId);

}

SqlMapConfig.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>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理,事务由mybatis管理 -->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池,由mybatis管理 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://10.20.22.211:3306/activity" />
                <property name="username" value="root" />
                <property name="password" value="mysql123" />
            </dataSource>
        </environment>
    </environments>
    <!--加载映射文件 -->
    <mappers>
        <mapper resource="sqlmap/ResourceMapper.xml"/>
    </mappers>

</configuration>

单元测试类

package com.pingan.hdht.dao;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;

import com.pingan.hdht.model.Resource;

/**
 * <p>
 * 概要信息:
 * 状态信息: 
 * 操作系统/硬件依赖/应用时可能存在的差异: 
 * 安全约束: 
 * 序列化格式: 
 * 参考的外部规格说明: 
 * </p>
 *
 * <p>
 * 版权: ©2016 中国平安保险(集团)股份有限公司 版权所有
 * </p>
 * 
 * @author gaoyunqi745
 * @version %I%, %G%
 */
public class ResourceDaoImplTest {
    private static SqlSessionFactory sqlSessionFactory = null;

    /**
     * <p>
     * 行为描述:
     * 状态转变:
     * 定义的算法:
     * 操作系统/硬件依赖:
     * 允许的实现变化:
     * 安全约束:
     * </p>
     * @param
     * @return
     * @throws
     * @see
     * @since %I%
     */
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        //mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传递mybatis的配置文件信息
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }


    @Test
    public void testMapperSelectByPrimaryKey() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        ResourceMapper resourceMapper = sqlSession.getMapper(ResourceMapper.class);
        Resource resource = resourceMapper.selectByPrimaryKey("1");
        System.out.println(resource.getResourceDesc());
    }
}

运行效果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值