Mybatis20_MyBatis的Dao层实现-实现方式5

MyBatis的Dao层实现方式

一、传统开发方式

  1. 编写UserDao接口

public interface UserMapper {
    List<User> findAll() throws IOException;
}

  2. 编写UserDaoImpl实现

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

  3. 测试传统方式

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

        //创建dao层对象  当前dao层实现是手动编写的
        UserMapper userMapper = new UserMapperImpl();
        List<User> all = userMapper.findAll();

        System.out.println(all);
    }

  执行,检查结果输出: [User{id=1, username='zhangsan', password='123'}, User{id=3, username='wangwu', password='123'}, User{id=4, username='zhaoliu', password='123'}, User{id=7, username='xxx', password='abc'}]

  4. 代码实现

  

      

    

    

二、代理开发方式 

 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. 测试代理方式

  

  4. 代码实现

     

    

    执行main方法,检查结果输出:

  

三、知识小结

 Mybatis的Dao层实现的两种方式:

  • 手动对dao进行实现:传统开发方式
  • 代理方式对dao进行实现:UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    

 

posted on 2023-06-01 22:48  花溪月影  阅读(1)  评论(0编辑  收藏  举报