Mybatis和MybatisPlus的对比区分理解法
首先,我们需要承认的是MybatisPlus是Mybatis的进阶版本,在原有的基础上只做增强不做改变,这点从依赖传递的角度上去讲解,我们在pom文件中导入了MybatisPlus的依赖,就不需要引入Mybatis的依赖了。先让我们对这两者进行区分并理解。
Mybatis: 首先在Mapper定义一个Mapper接口,需要在上面添加一个@Mapper接口,声明当前是一个Mapper接口,并且,程序在运行的时候会自动创建这个Mapper接口的bean对象,交给IOC容器。Mybatis可以对于简单的增删查改进行操作只需要配合SQL语句和相对应的增删查改的注解进行使用,对用需要动态加载的SQL语句,或者不是固定死的语句涉及了逻辑,这个时候我们就需要
使用XML映射文件,简单阐述一下XML映射文件的要求:一同包同名:需要自己定义一个XML映射文件,且映射文件的包名和文件名都要和Mapper层的Mapper接口一致。Xml的namespace需要和Mapper的全类名一致,SQL语句的ID要和Mapper接口的方法一致。在动态的SQL语句中涉及了两个符号一个是#号一个$ ,#的作用是占位符,最后会编译生?,性能高能够防止SQL注入,而$
是字符串拼接符,需要注意的是#和$不能放在引号中,这样会识别成字符串不能够起到作用。需要放在{}里面,动态的常用SQL语句 <where> ,<set>,<foreach>,<if test ></if>,其中需要注意的是foreach的应用场景是批量操作,例如批量增加或者批量删除。最后卸载XML文件中的ResultType和ResultMap的区别在于ResultType适合封装简单对象,而ResultMap查询的结果是复杂的对象,进行手动封装。
MybatisPlus,适用于简单的单表操作的增删查改,里面有很多的方法,只需要在Mapper层继承BaseMapper<E>,就可以实现单表的操作,包括他也有自己的单表操作Service层的方法,需要在Service接口上继承IService接口,并且在Service的实现类中继承IServiceImpl接口,然后在实体类需要注意的是字段名和属性名要符合一致,或者属性名是驼峰命名这样可以进行匹配。用到的注解
@TableName @TableId @TableField (如果数据库中没有该属性的字段,需要exist=false),最后在使用条件构造器的时候,推荐使用LambdaQueryWrapper,因为使用了方法引用。