MyBatis与MyBatisPlus的区别

这篇具有很好参考价值的文章主要介绍了MyBatis与MyBatisPlus的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、MyBatis-Plus简介

1.1 什么是mybatis-plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。

官网一共有两个:https://mybatis.plus/ 或 https://mp.baomidou.com/ 。

mybatis和mybatisplus的区别,mybatis,java,spring boot,spring,Powered by 金山文档

2.2 mybatis-plus的作者

Mybatis-Plus是由baomidou(苞米豆)组织开发并且开源的,截止写博客时间,该组织共17人。

mybatis和mybatisplus的区别,mybatis,java,spring boot,spring,Powered by 金山文档

二、如何使用MyBatis-Plus

2.1 mybaits回顾

详细步骤以及代码可以查看这篇博客:

什么是MyBatis_涩即是Null的博客-CSDN博客

2.1.1 需要准备的代码块

mybatis和mybatisplus的区别,mybatis,java,spring boot,spring,Powered by 金山文档

2.1.2 使用

当我们完成了上面这些必要的准备工作后,那么我们就可以使用mybatis了。

例如我们要查询数据库的信息:

/**
 * 查询
 * @throws IOException
 */
@Test
public void test1() throws IOException {
    //获得核心配置文件
    InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    //获得session工厂对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    //获得session会话对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //执行操作 参数:namespace+id
    List<User> userList = sqlSession.selectList("userMapper.findAll");
    //打印数据
    System.out.println(userList);
    //释放资源
    sqlSession.close();
}

这里几个API的解释:

  • SqlSessionFactoryBuilder :工厂构建器。通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象 。

  • SqlSessionFactory:工厂对象 ,用来创建sql会话。openSession( )会默认开启一个事务,但事务不会自动提交,也就意味着需要手动提 交该事务,更新操作数据才会持久化到数据库中 。如果里面传一个参数为true,那么不需要手动提交事务(更新操作中sqlSession.commit()方法就不需要写了)。

  • SqlSession :会话对象。执行接下来的增删改查操作。

2.2 mybatis-plus入门使用(结合springboot)

2.2.1 导入依赖

在pom.xml中先导入如下依赖:

<!-- mybatis-plus插的springboot支持 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>
<!-- MySql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>
<!-- 连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
</dependency>

2.2.2 编写配置文件

当我们使用springboot时,可以直接使用properties文件来直接配置,而不再是xml文档。

编写application.properties :

spring.application.name = mybatisPlus
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatisplus?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

2.2.3 编写dao实体(或pojo)

在原生mybatis中,驼峰映射默认是关闭的,但在mybatis-plus中是默认打开的。这样我们就可以从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属 性名 aColumn(驼峰命名) 的类似映射 。当我们不需要这样操作时,也可以在配置文件中关闭,即:

mybatis-plus.configuration.map-underscore-to-camel-case=false

这里使用User.java来存储和使用user信息:

@Data
@TableName("tb_user") 
public class User {

    @TableId(type = IdType.AUTO)  
    private Long id;

    private String userName;

    @TableField(select = false)  
    private String password;

    private String name;
    private Integer age;

    @TableField(value = "email")  
    private String mail;

    @TableField(exist = false)  
    private String address;
}

在这里,我们就可以看到mybatis-plus中给我提供了很多便捷的注解:

  • @TableName("tb_user"):因为在mybatis-plus中,默认找的数据库表名是“数据库名.实体名”。但是我们的数据库表名tb_user与其不一致,因此需要重新指定在数据库中的表名。

  • @TableId (type=IdType.AUTO):若type=IdType.AUTO则表示id自增长。

  • @TableField(select=false):表示查询时不返回该字段值,用来保护用户的密码信息。

  • @TableField(value="email"):因为mail与我们数据库中存储的email字段并不匹配(不是常规的驼峰命名),直接查询会导致查询失败。可以使用value字段重新指定。

  • @TableField(exist=false):假如该字段我们后期可能会插入数据库,但目前数据库还不存在该信息,那么我们就可以使用exist字段先不查询该字段以防报错。

2.2.4 继承BaseMapper

编写一个mapper去继承BaseMapper,BaseMapper是mybatis-plus团队所编写的用来直接操作数据库的接口。继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。

例如UserMapper.java:

public interface UserMapper extends BaseMapper<User> {
    
}

2.2.5 测试(springboot环境)

编写测试代码:

@RunWith(SpringJUnit4ClassRunner.class)  
@SpringBootTest
public class MybatisPlusSpringBootTest {

    @Autowired
    private UserMapper userMapper;  

    @Test
    public void testSelectList(){
        List<User> users = this.userMapper.selectList(null);
        for (User user: users) {
            System.out.println(user);
        }
    }
}

运行:

mybatis和mybatisplus的区别,mybatis,java,spring boot,spring,Powered by 金山文档

上面代码的selectList即为BaseMapper接口中的一个方法,以下为mybatis-plus官方注释:

mybatis和mybatisplus的区别,mybatis,java,spring boot,spring,Powered by 金山文档

2.3 mybatis-plus的简单总结(与mybatis的区别)

到这里,我们的mybatis-plus的基本使用就是这样完成的。与mybatis的区别基本有这些:

  1. 我们可以看到,我们不需要写sqlMapper.xml,而是直接继承一个父类BaseMapper就可以直接操作数据库。当然,当mybatis-plus的功能不足以完成我们的CRUD功能时,也还是需要我们继续编写sql语句。而大多数常用情况下我们可以直接使用Mybatis-plus给我们的方法去操作数据库。

  1. 而在dao实体类中我们也可以发现,mypatis-plus也为我们提供了很多方便的注解去实现数据库的一些约束条件。

  1. 在我们后期使用一些插件时的配置,在springboot中可以直接写在Application.properties中,而不是sqlConfig.xml。文章来源地址https://www.toymoban.com/news/detail-741139.html

到了这里,关于MyBatis与MyBatisPlus的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis-Plus 引入依赖导致的Error creating bean和java.lang.NoClassDefFoundError: com/baomidou/mybatisplus问题

     使用mybatis-plus出现的一些问题记录。 问题错误截图 问题原因: 依赖冲突 项目主pom文件中引入了mybatis-plus-boot-start依赖,版本为 3.5.3 业务包中引入mybatis-plus代码生成器依赖版本为 3.4.1 导致mybatis-plus-core核心包存在两个版本,导致冲突   解决办法 修改业务包中mybatis-plus代码

    2024年02月09日
    浏览(42)
  • mybatisplus 使用mybatis中的配置、mapper配置文件

    即在和application.properties同级目录下的mybatis目录中创建mybatis的配置文件mybatis-config.xml 其内容如下 方式一的目录结构: 1、在application.properties中再添加一行mapper映射地址 修改mapper映射的配置文件路径,这次不用在和mapper接口的路径一一对应,只需要在resource/mybatis/mapper/UserMa

    2023年04月08日
    浏览(32)
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

      工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理    工程项目各模块及其功能点清单 一、系统管理     1、数据字典:实现对数据字典

    2024年02月10日
    浏览(42)
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

    功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所有的立项信息。主要功能包含:招标立项申

    2024年02月09日
    浏览(46)
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms

    ​   功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所有的立项信息。主要功能包含:招标

    2024年02月12日
    浏览(35)
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis em

     工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理    工程项目各模块及其功能点清单 一、系统管理     1、数据字典:实现对数据字典标

    2024年02月14日
    浏览(43)
  • java版+免费商城搭建+小程序商城免费搭建+Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发

       J2EE企业分布式微服务云快速开发架构 Spring Cloud+Spring Boot2+Mybatis+Oauth2+ElementUI 前后端分离 1. 鸿鹄Cloud架构清单 2. Commonservice(通用服务) 通用服务:对spring Cloud组件的使用封装,是一套完整的针对于分布式微服务云架构的解决方案。如:注册中心、配置中心、网关中心、

    2024年02月15日
    浏览(29)
  • springboot和vue:七、mybatis/mybatisplus多表查询+分页查询

    mybatisplus实际上只对单表查询做了增强(速度会更快),从传统的手写sql语句,自己做映射,变为封装好的QueryWrapper。 本篇文章的内容是有两张表,分别是用户表和订单表,在不直接在数据库做表连接的情况下,通过后台代码完成①查询订单的同时查到该订单所属的用户,②

    2024年02月07日
    浏览(40)
  • Spring Boot如何整合mybatisplus

    maven application.yml 关注三个对象的创建: SqlSessionFactory如何创建 SqlSession如何创建 Mapper接口的代理类如何创建(比如UserMapper)。 源码 2.3.1 MapperScannerRegistrar 主要为MapperScannerConfigurer定制beanDefinition 2.3.2MapperScannerConfigurer MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor。 方法

    2024年02月14日
    浏览(26)
  • 【Mybatis-Plus】mybatisplus更新时,实体字段为空,数据库不更新的解决方案

    项目技术栈:jdk (1.8) + spring boot (2.1.0) + mybatis-plus (3.5.1) 数据库: MySQL 字段类型:varchar 和 Integer 从前端传过来的数据实体字段, convertType 和 step 设为null时,使用mybatis-plus 的 updateById方法往数据库中更新时,这两个字段不更新,数据不为空可以插入。 mybatis-plus在更新的时候做

    2024年01月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包