MyBatis的动态代理开发

1 动态代理Dao开发规则

  1. namespace必需是接口的全路径名
  2. 接口的方法名必需与映射文件的sql id一致
  3. 接口的输入参数必需与映射文件的parameterType类型一致
  4. 接口的返回类型必须与映射文件的resultType类型一致

  • 也就是说有一个UserMapper接口,他的一个方法的名为getUserById,方法的入参为int,返回值为User
public interface UserMapper{
    User getUserById(Integer id)
}

2 开发示例

2.1 创建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.itykd.mapper.UserMapper">
    <select id="getUserById" parameterType="Integer" resultType="com.itykd.domain.User">
        select * from `user` where id=#{id}
    </select>
</mapper>

2.2 创建UserMapper接口

public interface UserMapper{
    User getUserById(Integer id)
}

2.3 在核心配置文件SqlMapConfig.xml引入UserMapper.xml

    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="Mapper/UserMapper.xml"/>
    <mappers>

2.4 测试

package com.itykd.mapper;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.itykd.domain.User;
import com.itykd.util.MyBatisUtils;

public class UserMapperTest {

	@Test
	public void testGetUserById() {
		SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession();
		//获取接口的代理实现类
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		
		User user = userMapper.getUserById(33);
		System.out.println(user);
		sqlSession.close();
	}
}

猜你喜欢

转载自blog.csdn.net/W2612888/article/details/86000067