Mybatis学习日记三(Mybatis开发dao的方法)

Mybatis开发dao的方法

·SqlSession的使用范围

    1、SqlSessionFactoryBuilder

    通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory,将SqlSessionFactoryBuilder当成一个工具类使用,不使用单利管理,在需要创建工厂SqlSessionFactory的时候,只需要new一次SqlSessionFactoryBuilder即可。

    2、SqlSessionFactory

    通过SqlSessionFactory创建SqlSession,使用单利模式管理SqlSessionFactory(工厂一旦创建,就一直使用同一个实例)。当Mybatis和Spring整合之后,就会把会话工厂SqlSessionFactory交给Spring进行管理。

    3、SqlSession

    -SqlSession是一个面向用户(程序员)的接口

    -SqlSession中提供了很多操作数据库的方法,如:selectOne()返回单个对象,selectList()返回多个对象

    -SqlSession是线程不安全的,在SqlSession的实现类中,除了有接口中的方法(操作数据库的方法),还有数据域的属性。

    -SqlSession最佳应用场景在方法体内,定义成局部变量使用。

    

·原始dao开发方法

    1、程序员需要些dao接口和dao实现类,需要向dao实现类中注入会话工厂SqlSessionFactory,

在方法体内通过SqlSessionFactory创建SqlSession。

    2、dao接口

    3、dao接口实现类

        -第一步,新建dao接口实现类,实现dao接口,使用构造方法的方式注入单例会话工厂


        -第二步,实现dao接口的各个方法,在方法体内使用SqlSession


        -测试代码:


    4、原始dao开发的问题:

        ①dao的接口实现类方法存在的大量的模板方法,设想能否将类似代码提取出来,减少程序员工作量,提高代码复用性

        ②调用SqlSession方法时将statement的id硬编码了

        ③调用SqlSession方法时传入变量,由于SqlSession方法使用泛型,即使变量传入类型错误,编译阶段依然不报错,影响程序员开发效率。

·mapper代理方法

    1、mapper代理方法实际操作步骤

        (1)编写mapper.xml映射文件

        (2)编写mapper接口,遵循开发规范之后mybatis可以自动生成mapper接口实现类代理对象

        (3)开发规范:

           - 在mapper.xml中namespace等于mapper接口的地址

                           

            -mapper接口的方法名必须和mapper.xml中statement的id一致

            -mapper接口中方法的输入的参数类型必须和mapper.xml中statement中parameterType中的类型一致

            -mapper接口中方法的返回值的参数类型必须和mapper.xml中statement中resultType中的类型一致

            

        (4)SqlMapConfig.xml中加载mapper.xml配置文件

        

        (5)测试代码

        

·本章小结

    1、代理对象内部调用selectOnce或selectList

        -如果mapper方法返回一个pojo对象(非集合对象),代理对象内部通过selectOne来查询数据库


        -如果mapper方法返回一个pojo对象(集合对象),代理对象内部通过selectList来查询数据库


    2、mapper接口方法参数只有一个是否影响系统的开发

    系统框架汇中,dao层的代码是被业务层共用的,即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同业务方法的需求。

    注意:持久层中方法的参数可以使用包装类型:map...,而service方法中不建议使用包装类型,因为不利于业务层的可扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值