0


实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码

目录

在这里插入图片描述
MyBatis 和 MyBatisPlus 都是基于 MyBatis 的扩展库,用于简化 MyBatis 的开发。MyBatisPlus 是在 MyBatis 的基础上进行封装,提供了一套通用的 CRUD 操作接口,而 MyBatis 是一个底层的持久层框架。

1. 底层框架:

MyBatis 是一个持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原生映射。
MyBatisPlus 是一个基于 MyBatis 的扩展库,它提供了一套通用的 CRUD 操作接口,自动生成 SQL 语句,并提供了丰富的查询条件构造器等功能。MyBatisPlus 主要使用了注解进行配置和映射。

2. 代码差异:

MyBatis 的代码主要涉及到以下几个部分:

  • MyBatis 的配置文件(mybatis-config.xml),用于配置数据源、映射文件等。
  • 映射文件(Mapper.xml),用于定义 SQL 语句和结果映射。
  • Mapper 接口,用于定义与映射文件对应的方法。
  • DAO 接口,用于封装 Mapper 接口,提供统一的 CRUD 方法。 MyBatisPlus 的代码主要涉及到以下几个部分:
  • MyBatisPlus 的配置文件(mybatis-plus-config.xml),用于配置数据源、分页插件等。
  • 实体类(Entity),用于定义数据库表对应的实体类。
  • Mapper 接口,用于定义与数据库表对应的方法。
  • Service 接口,用于封装 Mapper 接口,提供统一的 CRUD 方法。
  • ServiceImpl 类,实现 Service 接口,调用 Mapper 接口进行数据库操作。

3. 使用差异:

MyBatis 需要手动编写 SQL 语句和结果映射,但提供了高度的定制化能力。MyBatis 的优点是可以根据实际需求灵活编写 SQL 语句,但缺点是编写映射文件和手动设置参数比较繁琐。
MyBatisPlus 提供了一套通用的 CRUD 操作接口,自动生成 SQL 语句。MyBatisPlus 的优点是简化了 MyBatis 的开发,提高了开发效率,但缺点是定制化能力较差,对于复杂的 SQL 语句可能无法满足需求。

4. 案例代码分析:

4.1 MyBatis

以下是一个简单的 MyBatis 案例,用于演示用户信息的增删改查:

<!-- 配置文件 --><configuration><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=UTC"/><propertyname="username"value="root"/><propertyname="password"value="password"/></dataSource></environment></environments><mappers><mapperresource="com/example/mapper/UserMapper.xml"/></mappers></configuration>
<!-- 映射文件 --><mappernamespace="com.example.mapper.UserMapper"><insertid="insertUser"parameterType="com.example.entity.User">  
       INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email})  
   </insert><!-- 其他 SQL 语句 --></mapper>
// Mapper 接口  publicinterfaceUserMapper{intinsertUser(User user);// 其他方法  }
// DAO 接口  publicinterfaceUserDao{intinsertUser(User user);// 其他方法  }
// 业务逻辑层  @ServicepublicclassUserService{@AutowiredprivateUserDao userDao;publicintinsertUser(User user){return userDao.insertUser(user);}// 其他方法  }

4.2 MyBatisPlus

以下是一个简单的 MyBatisPlus 案例,用于演示用户信息的增删改查:

  1. 首先,创建一个实体类(Entity)User.java:
publicclassUser{privateLong id;privateString username;privateString password;privateString email;// 省略 getter 和 setter 方法  }
  1. 创建一个 Mapper 接口 UserMapper.java:
importcom.baomidou.mybatisplus.core.mapper.BaseMapper;publicinterfaceUserMapperextendsBaseMapper<User>{}
  1. 创建一个 Service 接口 UserService.java:
importcom.baomidou.mybatisplus.extension.service.IService;publicinterfaceUserServiceextendsIService<User>{}
  1. 创建一个 ServiceImpl 类 UserServiceImpl.java,实现 Service 接口:
importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importorg.springframework.stereotype.Service;@ServicepublicclassUserServiceImplextendsServiceImpl<UserMapper,User>implementsUserService{}
  1. 创建一个 Controller 类 UserController.java,处理 HTTP 请求:
importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;importjava.util.List;@RestController@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserService userService;@PostMappingpublicStringcreateUser(@RequestBodyUser user){  
       userService.save(user);return"User created";}@GetMapping("/{id}")publicUsergetUser(@PathVariableLong id){return userService.getById(id);}@GetMappingpublicList<User>getUsers(){return userService.list();}@PutMapping("/{id}")publicStringupdateUser(@PathVariableLong id,@RequestBodyUser user){  
       user.setId(id);  
       userService.updateById(user);return"User updated";}@DeleteMapping("/{id}")publicStringdeleteUser(@PathVariableLong id){  
       userService.removeById(id);return"User deleted";}}
  1. 配置 MyBatisPlus 在 Spring Boot 项目中:
<!-- 配置文件 --><configuration><extensions><extensionplugin-id="mybatis-plus"interceptor="com.baomidou.mybatisplus.extension.MybatisPlusInterceptor"/></extensions></configuration>
<!-- 配置文件 --><mybatis-plus-config><mapper-locations><mapper-locationresource="classpath:mapper/*Mapper.xml"/></mapper-locations><type-aliases><packagename="com.example.entity"/></type-aliases><global-config><db-config><logicdelete-flag="true"/><logicnot-delete-flag="false"/></db-config><date-format>yyyy-MM-dd HH:mm:ss</date-format><null-type-handler>com.baomidou.mybatisplus.core.handlers.空字符串类型处理器</null-type-handler></global-config></mybatis-plus-config>

以上代码演示了如何使用 MyBatisPlus 实现用户信息的增删改查。在这个案例中,我们使用了 MyBatisPlus 提供的注解和插件,简化了 MyBatis 的开发。


本文转载自: https://blog.csdn.net/superdangbo/article/details/132812107
版权归原作者 Web3&Basketball 所有, 如有侵权,请联系我们删除。

“实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码”的评论:

还没有评论