Mybatis(四) - Mybatis的Dao 层实现

Mybatis(四) - Mybatis的Dao 层实现,第1张

Mybatis(四) - Mybatis的Dao 层实现

 一、传统开发方式

1. 编写UserDao 接口

public interface UserDao{

    List findAll() throws IOException;

}

2. 编写UserDaoImpl 实现

public class UserdaoImpl implements UserDao {

    public List findAll() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List userList = sqlSession.selectList("userMapper.findAll");
        sqlSession.close();
        return userList;
    }

}

3. 测试

@Test
public void testTraditionDao() throws IOException {
    UserDao userDao = new UserDaoImpl();
    List all = userDao.findAll();
    System.out.println(all);
}

二、代理开发方式

1. 代理开发方式介绍

        采用MyBatis 的代理开发方式实现Dao 层的开发,这种方式是我们后面进入企业的主流。

        Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由MyBatis 框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao 接口实现类方法。

        Mapper 接口开发需要遵循规范:

        (1)Mapper.xml 文件中的namespace 与mapper 接口的全限定名相同

        (2)Mapper 接口方法名和Mapper.xml 中定义的每个statement 的id 相同

        (3)Mapper 接口方法的输入参数类型和mapper.xml 中定义的每个sql 的parameterType 的类型相同

        (4)Mapper 接口方法的输出参数类型和mapper.xml 中定义的每个sql 的resultType 的类型相同

2. 编写UserMapper 接口

3. 测试

    public static void main(String[] args) throws IOException {

        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List all = mapper.findAll();
        System.out.println(all);

        User user = mapper.findById(1);
        System.out.println(user);
        
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4670579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-07
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存