MyBatis Mapper代理对象开发模式

使用MyBatis框架进行持久层的开发,以一个UserDao为例。

  • 原先的开发方式:

创建一个UserDao接口,这个接口中给出了各种方法,规定了方法的功能。然后再创建一个UserDaoImpl类,实现UserDao接口,实现里边的方法从而实现对数据库的增删改查。

  • 使用mapper代理对象的方式:

还是要创建UserDao接口,但不需要再创建UserDaoImpl类实现这个接口,通过mapper代理,直接通过UserDao接口中的抽象方法调用map映射文件中的SQL语句,实现对数据库的增删改查。

具体操作

  • 在map映射文件中将命名空间设置为要代理的抽象类的全名,以UerDao为例。

  • 将UserDao接口中的抽象方法与map映射文件中的<select></select>等标签进行一一对应,有以下几点要求。
  • ※ 接口中方法的方法名必须和要对应标签的id属性的属性值相同。
    
    ※ 接口中方法的参数类型必须和要对应标签的parameterType属性的属性值相同,如果方法相传递两个参数,那
       么要封装到对象中,只传对象参数。
    
    ※ 接口中方法的返回值类型必须和要对应标签的resutType属性的属性值相同,如果接口中的方法返回的是一个    
       集合,那么对应标签中的resutType属性的属性值,只要和集合中的泛型相同即可。
    
    ※ 如果映射文件和接口放在同一个包下,映射文件的文件名和接口的名字要一样。
    
  • 将接口的对象代理到map映射文件

利用SqlSession对象调用getMapper()方法,方法的参数是一个Class对象,要传入接口中的对象class。

用一个接口对象来接收它的返回值,如:UserDao userDao = sqlSession.getMapper(UserDao.class);

  • 执行完getMapper()方法之后就可以通过接口的对象调用它里边的抽象方法,每一个抽象方法都对应一个SQL语句,实际上调用的是对应的SQL语句。

猜你喜欢

转载自blog.csdn.net/Sacredness/article/details/81712581