Mybatis通过接口的代理方式实现Dao层

本文介绍了Mybatis如何通过接口的动态代理方式实现Dao层。开发规范包括:namespace与接口全限定名一致,方法名与statement id相同,参数类型与parameterType匹配,返回值与resultType匹配。在实践中,通过sqlSession的getMapper方法传入接口类对象获取Mapper实例,方法参数传递实现动态SQL,返回值自动识别。
摘要由CSDN通过智能技术生成

 Mybatis通过接口的代理方式实现Dao层

    使用这种方式只需要我们编写Mapper接口,由mybatis框架来进行创建对应的实现类【原理是使用动态代理】

接口代理方式的开发规范:

  • Mapper.Xml文件中的namespace(映射文件中额命名空间)和Mapper接口的全限定名相同。
  • Mapper接口中的方法名和Mapper。Xml中定义的每个statement(sql操作的标签)的id相同。
  • Mapper接口中的方法的输入参数类型要和映射文件中定义的每个sql的parameterType的类型相同。
  • Mapper接口中的方法的返回值要和映射文件中定义的每个sql的resultType的类型相同相同。

图形规范:

 代码实现:
Dao层接口:
mapper代码的实现:

public interface UserDao {
      void  save();
}

映射文件:

 测试代码:

@Test
 public  void   sh() throws IOException {

    //加载核心配置文件   其中参数的地址是相对于  类加载路径下的地址   返回值是一个流
    InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
    //获得sqlsession工厂对象
    SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
    //获得sqlsession的会话对象
    SqlSession sqlSession = build.openSession();
    //执行数据库的操作
    UserDao1 mapper = sqlSession.getMapper(UserDao1.class);
    List<User> save = mapper.save();
    System.out.println(save);

    //关闭session会话对象
    sqlSession.close();

使用接口代理的方式需要使用sqlsession会话对象创建mapper对象,sqlSession.getMapper(UserDao1.class);参数是mapper接口的类对象。 List<User> save = mapper.save();返回值类型自动识别。

 mapper接口中的方法含有参数:

    dao层接口:

 映射文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值