MyBatis注解式和配置式的区别?

-----今天我给大家来讲讲MyBatis的注解式和配置式的区别:

MyBatis和hibernate一样都是属于持久层的框架,也是ORM的映射关系,但是他和hibernate最最最明显的区别是,Mybatis是半自动的,什么是半自动呢?这个简单的来说就是由程序员手动生成sql语句,这个就区别传统的jdbc了,虽然是手动生成sql语句让人有种久别的亲切感,但是我们只需要建立sql上的逻辑关系,实体依然和数据库自动进行映射,也就是说,我的sql语句字段映射的就是实体的属性。所以说他是半自动的咯~

------但是今天的主题是MyBatis注解式和配置式之间的差异:

1.文件上的差异:
有过Mybatis开发经历的小伙伴肯定知道,我们进行配置式开发的时候我们需要在项目中的mapper包中去配置一个xml的一个映射业务接口的一个文件,这里面写的就也就是我们的sql,它是长这样子的:
在这里插入图片描述
那么我们用注解式开发的时候,这个文件也就不需要了,我们的信息会根据注解配置在接口上。
2.配置上的差异:
在进行MyBatis’开发,无论是配置式开发还是注解式开发,他都会有一个最基础的配置文件,一般叫MyBatis-config.xml,这里面也就是声明一下数据源,配置一下数据库连接池,声明标签中的信息别名等等,虽说的简单但是却是核心所在。
配置式:上面也说了,在mapper中配置一个xml,处理我们的业务逻辑,而注解式则是在接口方法上实现。
在这里插入图片描述
重点在黄色框框内,看清楚@select属于哪个包?这一行代码就取代了整个xml,是不是很牛皮,感觉到了映射能力的强大。

除开这个之外,MyBatis-config.xml这个文件声明的mapper标签也从配置式的引入xml文件变成注解式的引入类文件。
在这里插入图片描述
由此可见,那么insert,update,delete也是如此,但是有个不好的消息就来了,注解式如何实现动态Sql,那么这样的话上面描述的注解是无法完成Sql的。

3.动态Sql上的差异:
配置式常用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注解式则需要用到sql语句构造器如下:
在这里插入图片描述
回到接口引用sql构造器的方法:
在这里插入图片描述
这里的type=构造器的类的对象,method=“构造器的方法”,那么构造器的参数则与接口方法参数对应。

4.总结:
从开发角度说:注解配置比配置文件开发效率高;
从执行角度说:配置文件比注解配置执行效率高,更容易看懂!

猜你喜欢

转载自blog.csdn.net/Bey_Bey/article/details/84525027