码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis10 实现类代理对象开发

时间:2015-10-11 16:40:01      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

mapper实现类代理对象开发
要想让mybatis自动创建dao接口实现类的代理对象,必须遵循一些规则:
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.close();
这2步好封装,代理类写死就可以了,以后自动生成就可以了。
User user = sqlSession.selectOne("test.findUserById", id);不好封装,因为test.findUserById是变动的,难以通过代理自动生成。
1、mapper.xml(UserMapper.xml)中namespace指定为mapper接口的全限定名
<mapper namespace="cn.itcast.mybatis.mapper.UserMapper">
此步骤目的:通过mapper.xml和mapper.java(UserMapper.java)进行关联。

2、mapper.xml中statement的id就是mapper.java(UserMapper.java)中方法名

3、mapper.xml中statement的parameterType和mapper.java(UserMapper.java)中方法输入参数类型一致

4、mapper.xml中statement的resultType和mapper.java(UserMapper.java)中方法返回值类型一致.
1.1.1mapper.xml(UserMapper.xml映射文件)
mapper映射文件的命名方式建议:表名Mapper.xml
namespace指定为mapper接口的全限定名

技术分享

Mapper(UserMapper.java)接口
mybatis提出了mapper接口,相当 于dao 接口。

mapper接口的命名方式建议:表名Mapper

技术分享

1.1.1将mapper.xml在SqlMapConfig.xml中加载

技术分享

 

mapper接口返回单个对象和集合对象
不管查询记录是单条还是多条,在 statement中resultType定义一致,都是单条记录映射的pojo类型。
mapper接口方法返回值,如果是返回的单个对象,返回值类型是pojo类型,生成的代理对象内部通过selectOne获取记录,如果返回值类型是集合对象,生成的代理对象内部通过selectList获取记录。

技术分享

 测试:

    // 会话工厂
    private SqlSessionFactory sqlSessionFactory;

    // 创建工厂
    @Before
    public void init() throws IOException {

        // 配置文件(SqlMapConfig.xml)
        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);

    }

    @Test
    public void testFindUserByUsername() throws Exception {

        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 创建代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        List<User> list = userMapper.findUserByName("小明");

        System.out.println(list);

    }

 

mybatis10 实现类代理对象开发

标签:

原文地址:http://www.cnblogs.com/yaowen/p/4869487.html

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