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

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

1 思路

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

 

 

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

 

开发规范:

a、在mapper.xml中namespace等于mapper接口地址

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

b、mapper.java接口中的方法名和mapper.xml中statement的id一致

 

c、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

 

d、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

 

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

 

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方法中建议不要使用包装类型(不利于业务层的可扩展)。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念