当前位置:   article > 正文

MyBatis与MyBatisPlus的区别_mybatis和mybatisplus的区别

mybatis和mybatisplus的区别

一、MyBatis-Plus简介

1.1 什么是mybatis-plus

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

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

2.2 mybatis-plus的作者

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

二、如何使用MyBatis-Plus

2.1 mybaits回顾

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

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

2.1.1 需要准备的代码块

2.1.2 使用

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

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

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

这里几个API的解释:

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

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

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

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

2.2.1 导入依赖

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

  1. <!-- mybatis-plus插的springboot支持 -->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.5.2</version>
  6. </dependency>
  7. <!-- MySql -->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. <version>8.0.30</version>
  12. </dependency>
  13. <!-- 连接池 -->
  14. <dependency>
  15. <groupId>com.alibaba</groupId>
  16. <artifactId>druid</artifactId>
  17. <version>1.2.15</version>
  18. </dependency>

2.2.2 编写配置文件

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

编写application.properties :

  1. spring.application.name = mybatisPlus
  2. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  3. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatisplus?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
  4. spring.datasource.username=root
  5. 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信息:

  1. @Data
  2. @TableName("tb_user")
  3. public class User {
  4. @TableId(type = IdType.AUTO)
  5. private Long id;
  6. private String userName;
  7. @TableField(select = false)
  8. private String password;
  9. private String name;
  10. private Integer age;
  11. @TableField(value = "email")
  12. private String mail;
  13. @TableField(exist = false)
  14. private String address;
  15. }

在这里,我们就可以看到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:

  1. public interface UserMapper extends BaseMapper<User> {
  2. }

2.2.5 测试(springboot环境)

编写测试代码:

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @SpringBootTest
  3. public class MybatisPlusSpringBootTest {
  4. @Autowired
  5. private UserMapper userMapper;
  6. @Test
  7. public void testSelectList(){
  8. List<User> users = this.userMapper.selectList(null);
  9. for (User user: users) {
  10. System.out.println(user);
  11. }
  12. }
  13. }

运行:

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

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。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/174089
推荐阅读
相关标签
  

闽ICP备14008679号