码迷,mamicode.com
首页 > 移动开发 > 详细

MyBatis学习13-MyBatis使用mapper代理DAO方法进行开发

时间:2015-11-20 19:11:52      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

1.基本思路

  需要编写mapper接口和mapper.xml映射文件。编写mapper接口需要遵循一些开发规范,从而让mybatis可以自动生成mapper接口实现类代理对象。

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

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

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

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

   这4步的具体实施请参见下面。

2.建立以下文件:

   技术分享

技术分享

 

 

技术分享

3.在SqlMapConfig.xml中加载mapper.xml

<mappers>
<mapper resource="sqlmap/User.xml"></mapper>
<mapper class="mapper.UserMapper"/>
</mappers>

 

4.编写测试文件,测试成功。

package mapper;

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 po.User;

public class UserMapperTest {
private SqlSessionFactory sqlSessionFactory;

@Before
public void setUp() throws Exception {
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}

@Test
public void testFindUserById() throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);
System.out.println(user);
}

}

 

5.代理对象内部调用selectOne或selectList

  技术分享

上述虽然不一致,但仍然是正确的,解释如下:

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

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

 

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

   系统框架中,dao层的代码是被业务层公用的。即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同的业务方法的需求。

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

 

MyBatis学习13-MyBatis使用mapper代理DAO方法进行开发

标签:

原文地址:http://www.cnblogs.com/hqt2050/p/4981395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!