mybatis学习记录------5

mapper代理方法(程序员只需要mapper接口,相当于DAO接口)

1 思路

程序员还需要编写mapper.xml映射文件,在src文件夹下新建mapper包,用于存放mapper接口

程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

开发规范:

a、在mapper.xmlnamespace等于mapper接口地址

在config文件夹下新建个mapper文件夹,存放对应的映射文件

b、mapper.java接口中的方法名和mapper.xmlstatementid一致

cmapper.java接口中的方法输入参数类型和mapper.xmlstatementparameterType指定的类型一致。

dmapper.java接口中的方法返回值类型和mapper.xmlstatementresultType指定的类型一致。

 

以上开发规范主要是对下边的代码进行统一生成:

User user = sqlSession.selectOne("test.findUserById", id);

sqlSession.insert("test.insertUser", user);

 2 实现

新建userMapperTest.java测试文件

package pers.czs.mybatis.first;

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.Test;

import pers.czs.mybatis.mapper.UserMapper;

public class userMapperTest {
    @Test
    public void testFindUserByid() throws Exception {
        //Mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //创建UserMapper对象,myvatis自动生成mapper代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        
        //调用userMapper的方法
        System.out.println(userMapper.findUserById(29));
    }
}    

运行结果:

 3 注意

如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。

如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。

 

mapper接口方法参数只能有一个是否影响系统开发

mapper接口方法参数只能有一个,系统是否不利于扩展维护。

系统框架中,dao层的代码是被业务层公用的。

即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同的业务方法的需求。

注意:持久层方法的参数可以包装类型、map。。。,service方法中建议不要使用包装类型(不利于业务层的可扩展)。

猜你喜欢

转载自www.cnblogs.com/czsy/p/10361018.html