返回顶部
首页 > 资讯 > 后端开发 > JAVA >实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码
  • 439
分享到

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

mybatisjavamybatisplusspring 2023-09-14 12:09:13 439人浏览 独家记忆
摘要

目录 1. 底层框架:2. 代码差异:3. 使用差异:4. 案例代码分析:4.1 MyBatis4.2 MyBatisPlus 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>     <environments default="development">         <environment id="development">             <transactionManager type="JDBC"/>             <dataSource type="POOLED">                 <property name="driver" value="com.Mysql.jdbc.Driver"/>                 <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"/>                 <property name="username" value="root"/>                 <property name="passWord" value="password"/>             dataSource>         environment>     environments>     <mappers>         <mapper resource="com/example/mapper/UserMapper.xml"/>     mappers>  configuration>  
  <mapper namespace="com.example.mapper.UserMapper">     <insert id="insertUser" parameterType="com.example.entity.User">         INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email})     insert>       mapper>  
// Mapper 接口  public interface UserMapper {     int insertUser(User user);     // 其他方法  }
// DAO 接口  public interface UserDao {     int insertUser(User user);     // 其他方法  }
// 业务逻辑层  @Service  public class UserService {     @Autowired     private UserDao userDao;     public int insertUser(User user) {         return userDao.insertUser(user);     }     // 其他方法  }

4.2 MyBatisPlus

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

  1. 首先,创建一个实体类(Entity)User.java:
public class User {     private Long id;     private String username;     private String password;     private String email;   // 省略 getter 和 setter 方法  }
  1. 创建一个 Mapper 接口 UserMapper.java:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {  }
  1. 创建一个 Service 接口 UserService.java:
import com.baomidou.mybatisplus.extension.service.IService;public interface UserService extends IService<User> {  }
  1. 创建一个 ServiceImpl 类 UserServiceImpl.java,实现 Service 接口:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;  import org.springframework.stereotype.Service;@Service  public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {  }
  1. 创建一个 Controller 类 UserController.java,处理 Http 请求:
import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.WEB.bind.annotation.*;import java.util.List;@RestController  @RequestMapping("/user")  public class UserController {   @Autowired     private UserService userService;   @PostMapping     public String createUser(@RequestBody User user) {         userService.save(user);         return "User created";     }   @GetMapping("/{id}")     public User getUser(@PathVariable Long id) {         return userService.getById(id);     }   @GetMapping     public List<User> getUsers() {         return userService.list();     }   @PutMapping("/{id}")     public String updateUser(@PathVariable Long id, @RequestBody User user) {         user.setId(id);         userService.updateById(user);         return "User updated";     }   @DeleteMapping("/{id}")     public String deleteUser(@PathVariable Long id) {         userService.removeById(id);         return "User deleted";     }  }
  1. 配置 MyBatisPlus 在 Spring Boot 项目中:
  <configuration>     <extensions>         <extension plugin-id="mybatis-plus" interceptor="com.baomidou.mybatisplus.extension.MybatisPlusInterceptor"/>     extensions>  configuration>  
  <mybatis-plus-config>     <mapper-locations>         <mapper-location resource="classpath:mapper/*Mapper.xml"/>     mapper-locations>     <type-aliases>         <package name="com.example.entity"/>     type-aliases>     <global-config>         <db-config>             <logic delete-flag="true"/>             <logic not-delete-flag="false"/>         db-config>         <date-fORMat>yyyy-MM-dd HH:mm:ssdate-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

--结束END--

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

本文链接: https://lsjlt.com/news/407232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作