Mybatis学习3——动态代理

Posted on 2019-04-07 19:30  jinyu-helloword  阅读(69)  评论(0)    收藏  举报

动态代理只需要接口和mapper映射文件不需要实现类

动态代理规范

1、namespace必须是接口的全路径
2、接口的方法必须与sql的id一致
3、接口的入参与parameterType类型一致
4、接口的返回值必须与resultType类型一致

1、写接口UserMapper.java

package mapper;

import java.util.List;

import pojo.User;

public interface UserMapper {
    User getUserBYId(Integer id);
    List<User> getUSerByUserName(String userName);
}

2、mapper映射文件UserMapper.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- namespace命名空间,隔离sql文件 -->
 6 <!-- #{}占位符相当于jdbc的? -->
 7 <!-- ${value} 字符串拼接 -->
 8 <!-- 动态代理开发原则
 9 1、namespace必须是接口的全路径
10 2、接口的方法必须与sql的id一致
11 3、接口的入参与parameterType类型一致
12 4、接口的返回值必须与resultType类型一致
13  -->
14 <mapper namespace="mapper.UserMapper">
15     <select id="getUserBYId" parameterType="int" resultType="pojo.User">
16         select id, username,birthday,sex,address from user where id = #{id}
17     </select>
18     <select id="getUSerByUserName" parameterType="String" resultType="pojo.User">
19         select id, username,birthday,sex,address from user where username like '%${value}%'
20     </select>
21 </mapper>

3、在sqlMapperConfig.xml引入mapper文件

    <mappers>
        <mapper resource="mybatis/user.xml"/>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>

4、测试

package mapper;

import static org.junit.Assert.*;

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

import pojo.User;
import util.SqlSessionFactoryUtil;

public class UserMapperTest {

    @Test
    public void test() {
        SqlSession openSession = SqlSessionFactoryUtil.getSqlSessionFactory().openSession();
        //获得接口实现类
        UserMapper mapper = openSession.getMapper(UserMapper.class);
        User userBYId = mapper.getUserBYId(10);
        System.out.println(userBYId);
        openSession.close();
    }

}

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3