在Springboot中Mybatis与Mybatis-plus的区别

目录

1.特性

2.代码的区别

3.两者之间的差异

4.代码解析


MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。MyBatisPlus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatisPlus 官网是这么说的我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

1.特性

 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录

MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

MyBatisPlus 是一个基于 MyBatis 的扩展库,它提供了一套通用的 CRUD 操作接口,自动生成 sql语句,提供了丰富的查询条件构造器等功能。MyBatisPlus 主要使用了注解进行配置和映射。

2.代码的区别

MyBatis 的代码主要分为以下几个部分:

MyBatis 的配置文件(mybatis-config.xml),用于配置数据源、映射文件等。
映射文件(Mapper.xml),用于定义 SQL 语句和结果映射。
Mapper 接口,用于定义与映射文件对应的方法。
Service 接口,用于封装 Mapper 接口,提供统一的 CRUD 方法。
ServiceImpl 类,实现 Service 接口,调用 Mapper 接口进行数据库操作。

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

3.两者之间的差异

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

4.代码解析

关于MyBatis 和MyBatisPlus的代码分析用经典的增删查改来演示

 MyBatis实现增删查改

1.配置文件

 <insert id="addErrLevel" parameterType="ErrLevel">
        insert into err_level values (#{errKey},#{errValue},#{errDec})
    </insert>

    <update id="updateErrLevel" parameterType="ErrLevel">
        update err_level set errKey = #{errKey},errDec=#{errDec}  where errValue = #{errValue}
    </update>


    <select id="selectByErrLevel" resultType="ErrLevel">
        select * from err_level
    </select>

    <delete id="deleteErrLevel">
        delete from err_level WHERE errValue = #{errValue}
    </delete>

2.Mapper接口

 
    int addErrLevel(ErrLevel errLevel);
     void updateErrLevel(ErrLevel errLevel);

    List<ErrLevel> selectByErrLevel();
    void deleteErrLevel(ErrLevel errLevel);

3.Service 接口

    
int myAddErrLevel(ErrLevel errLevel);
void updateErrLevel(ErrLevel errLevel);

List<ErrLevel> selectByErrLevel();

void deleteErrLevel(ErrLevel errLevel);

4.ServiceImpl 类

  @Resource
    ErrLevelMapper errLevelMapper ;
    @Override
    public int myAddErrLevel(ErrLevel errLevel) {
        return errLevelMapper.addErrLevel(errLevel);
    }

    public void updateErrLevel(ErrLevel errLevel){
        errLevelMapper.updateErrLevel(errLevel);
    }

    @Override
    public List<ErrLevel> selectByErrLevel() {
        return errLevelMapper.selectByErrLevel();
    }

    @Override
    public void deleteErrLevel(ErrLevel errLevel) {
         errLevelMapper.deleteErrLevel(errLevel);
    }

5.Controller实现类

 @Resource
    IErrLevelService errLevelService ;
    @PostMapping("/add")
    public Result<Integer> addErrlvl(@RequestBody ErrLevel errLevel){
        int num = errLevelService.myAddErrLevel(errLevel);
        return Result.success(num,"新增成功");
    }

    @PutMapping("/update")
    public Result<?> updateUser(@RequestBody ErrLevel errLevel){
        errLevelService.updateErrLevel(errLevel);
        return Result.success("更新成功");

    }

    @GetMapping("/getByMainPage")
    public Result<List<ErrLevel>>selectByMainPage(){
        List<ErrLevel> list =  errLevelService.selectByErrLevel();
        return Result.success(list,"查询成功!");
    }
    @DeleteMapping("/delete")
    public Result<?> deleteErr(@RequestBody ErrLevel errLevel){
        errLevelService.deleteErrLevel(errLevel);
        return Result.success("删除成功");
    }

MyBatisPlus实现增删查改

1.引入依赖

//引入依赖
<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.5.3</version>
		</dependency>

2.创建用户实体 

//实体
@Data
public class User {  
   private Long id;  
   private String username;  
   private String password;   
}

3.创建Mapper接口 

//Mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {  
}

4.创建service接口 

//Service接口 

public interface UserService extends IService<User> {  
}

5.创建一个 ServiceImpl 类,实现service接口 

@Service  
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {  
}

6.创建一个 Controller 类处理对应请求 

@RestController  
@RequestMapping("/user")  
public class UserController {
   @Autowired  
   private UserService userService;
   @PostMapping("/insert")  
   public String createUser(@RequestBody User user) {  
       userService.save(user);  
       return "User created";  
   }
   @GetMapping("/get{id}")  
   public User getUser(@PathVariable Long id) {  
       return userService.getById(id);  
   }
   @GetMapping("/list")
   public List<User> getUsers() {  
       return userService.list();  
   }
   @PutMapping("/update{id}")  
   public String updateUser(@PathVariable Long id, @RequestBody User user) {  
       user.setId(id);  
       userService.updateById(user);  
       return "User updated";  
   }
   @DeleteMapping("/delete{id}")  
   public String deleteUser(@PathVariable Long id) {  
       userService.removeById(id);  
       return "User deleted";  
   }  
}

以上就是MyBatis和MyBatis-Plus的代码演示,虽然MyBatis-Plus没有对复杂SQL查询操作进行封装,但是它提供了一些辅助功能,可以帮助开发者更加方便地进行复杂SQL查询操作。

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值