7

SpringBoot整合MyBatis框架

    Mybatis是一个优秀的持久层框架,什么是持久层呢?就是可以长时间保存数据到数据库或者硬盘当中,不会像放在内存中,一断电就丢失了。
    @Mapper注解是由Mybatis框架中定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉sprigng框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。
    首先我们需要引入jar包(依赖),分别是JDBC、MYSQL、MYBATIS。

image.png

    
    然后创建一个接口类,类的上面需要写上@Mapper注释用来表示该接口类的实现类对象交给mybatis底层创建,然后交由Spring框架管理。

image.png

    
    类里写上一个通过ID删除数据库中的一个表数据的抽象法法,用Mapper接口开发模式的注解写法,我写的SQL语句是通过ID进行删除,SQL语句中的#{}。
    是一种占位符,通过方法里的形式参数传入进去这个值,所以方法里需要传入一个包装类型或者整数类型的参数。

image.png

    
    再创建一个测试类,用来测试接口中的类的方法可否调用,测试类的上面要写上@SpringBootTest注解表示这个测试类交给Spring框架管理,声明一个接口类型的属性然后上面用@Autowired注解表示将这个接口类的实现类对象赋值给接口属性,然后写上一个方法,方法体里利用test对象调用接口中的testdelete删除方法,返回值是一个整数的类型的变量。输出这个变量,表示是数据库表中被影响行数。我删除的是id为5这个信息所以只有1个影响行数。        

image.png

image.png

    这里有一个疑问我们并没有创建这个接口类的实现类对象,为什么可以调用这个方法呢?
    原因是我们不用自己创建该接口的实现类对象而是在这个接口上采用了@Mapper注解让Mybatis底层为我们创建这个接口的实现类对象所以我们可以直接调用它的方法。如何查看这个对象的值呢,我们可以利用Debug方式运行程序。再程序的第16行打上一个断点然后,鼠标右键执行Debug运行方式,再将鼠标移动到test这个变量上,会弹出一个界面。
    

image.png

image.png

    这个界面中显示的test=$Proxy58就是Mybatis为我们创建的实现类对象,Proxy是代理的意思58是编号是随机的,也就是test这个接口的实现类是一个代理对象。这个代理对象被存储到spring容器中通过@Autowired自动注入到这个接口属性对象。所以我们才能调用这个方法。


仓悬
19 声望2 粉丝