Mybatis之Mapper代理开发方式(四)

使用Mapper代理开发,使用mapper接口相当于使用dao接口。mapper代理使用了jdk的代理策略。下面通过User的查找和删除来了解。这里默认有pojo 类sqlMapConfig.xml 已经创建好,就不一一介绍了如果想了解请看我之前的文章。

1. Mapper代理开发规范

使用过程中我们要遵守下面规则:
1. mapper 接口的权限定名(形如:com.mybatis.example.mapper)要和mapper映射文件的namespace值一致
2. mappper接口的方法名称要和mapper映射文件的statement的id一致。
3. mapper接口的方法参数类型要和mapper映射文件statement的parameterType的值一致,而且它的参数是一个。
4. mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。

2. 定义mapper 接口

在src目录下新建包 并创建mapper接口
这里写图片描述

public interface UserMapper {
    //查询用户
    public User findUserById(int id) throws Exception ;
    //插入用户
    public int insertUser(User user) throws Exception ;  

}

3. mapper 映射文件

在config目录下创建mapper 包然后在mapper包下创建UserMapper.xml (这是mybatis的命名规范,不是必须这个名)
config目录

UserMapper.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.mybatis1.mapper.UserMapper"> 

       <select id="findUserById" parameterType="int" resultType="com.mybatis1.pojo.User">
       select * from USER where id = #{id}  ;
       </select>  

       <insert id="insertUser"  parameterType="com.mybatis1.pojo.User">
           <selectKey keyProperty="id" resultType="int" order="AFTER">
           select LAST_INSERT_ID()  
           </selectKey>
           insert into USER(uname) values(#{uname}) ; 
       </insert>

  </mapper>

4. 配置sqlMapConfig.xml

需要加载配置文件。在sqlMapConfig.xml中加入

<mapper resource="mapper/UserMapper.xml" />

如图:
这里写图片描述

这样就算配置好了。

5. 使用Junit调试

新建目录test 并在目录里新建 com.mybatis.mapper 包
这里写图片描述

Myeclise 上Junit
1. 在UserMapper.java 右击 new一个 选择 other
这里写图片描述
2. 选择 java 下的 JUnit 下的 JUnit Test Case 确定

这里写图片描述

  1. 将src改为test 其他的 按图所示。finnish

这里写图片描述

4.打开UserMapperTest.java 修改测试代码。

package com.mybatis1.mapper;

import static org.junit.Assert.*;

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.Before;
import org.junit.Test;

import com.mybatis1.pojo.User;

public class UserMapperTest {

    private SqlSessionFactory sessionFactory ;
    @Before
    public void setUp() throws Exception {
        //创建UserMapper 对象 

        String resource ="SqlMapConfig.xml" ;
        InputStream is = Resources.getResourceAsStream(resource) ;

        sessionFactory = new SqlSessionFactoryBuilder().build(is);

    }

    @Test
    public void testFindUserById() throws Exception{
        //创建sqlsession
        SqlSession sqlSession = sessionFactory.openSession() ; 
        //使用sqlsession.getMapper()方法创建mapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class) ;
        //使用mapper接口的方法查找用户
        User user =  mapper.findUserById(1) ;
        System.out.println(user);
        //关闭sqlsession
        sqlSession.close();

    }

    @Test
    public void testInsertUser() throws Exception{
        SqlSession sqlSession = sessionFactory.openSession() ; 
        UserMapper mapper = sqlSession.getMapper(UserMapper.class) ; 

        User user = new User() ; 
        user.setUname("MapperInsert"); 
        mapper.insertUser(user) ;

        System.out.println(user);
        System.out.print(user.getId());

        sqlSession.commit(); //commit 的时候 真正的将数据放到数据库 ,之前只是在缓冲区
        sqlSession.close(); 

    }

5.进行调试 在测试方法上右击 run as JUnit Test
数据库:
这里写图片描述

testFindUserById方法进行单元测试结果:
这里写图片描述

testInsertUser 的结果
这里写图片描述
控制台信息

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值