开发者

在Springboot中Mybatis与Mybatis-plus的区别详解

开发者 https://www.devze.com 2023-12-23 10:52 出处:网络 作者: L20523
目录引言1.特性2.代码的区别3.两者之间的差异4.代码解析引言 MyBATis是一个优秀的javascript持久层框架,它对JDBC的操作数据库的过程进行封装。MyBatisPlus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础
目录
  • 引言
  • 1.特性
  • 2.代码的区别
  • 3.两者之间的差异
  • 4.代码解析

引言

MyBATis是一个优秀的javascript持久层框架,它对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">
php        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 UserSjavascriptervice 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 idONHCnfdzpE) {  
       userService.removeById(id);  
       return "U编程客栈ser deleted";  
   }  
}

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

到此这篇关于在Springboot中Mybatis与Mybatis-plus的区别详解的文章就介绍到这了,更多相关Springboot Mybatis与Mybatis-plus区别内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号