最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Springboot中Mybatis與Mybatis-plus的區(qū)別詳解

 更新時間:2023年12月22日 10:24:36   作者:L20523  
MyBatis是一個優(yōu)秀的持久層框架,它對JDBC的操作數(shù)據(jù)庫的過程進行封裝,MyBatisPlus (簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,本文將給大家介紹了在Springboot中Mybatis與Mybatis-plus的區(qū)別

引言

MyBatis是一個優(yōu)秀的持久層框架,它對JDBC的操作數(shù)據(jù)庫的過程進行封裝。MyBatisPlus (簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。

MyBatisPlus 官網(wǎng)是這么說的我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。

1.特性

 MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架

 MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集

MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄

MyBatis 是一個 半自動的ORM(Object Relation Mapping)框架

MyBatisPlus 是一個基于 MyBatis 的擴展庫,它提供了一套通用的 CRUD 操作接口,自動生成 sql語句,提供了豐富的查詢條件構(gòu)造器等功能。MyBatisPlus 主要使用了注解進行配置和映射。

2.代碼的區(qū)別

MyBatis 的代碼主要分為以下幾個部分:

MyBatis 的配置文件(mybatis-config.xml),用于配置數(shù)據(jù)源、映射文件等。
映射文件(Mapper.xml),用于定義 SQL 語句和結(jié)果映射。
Mapper 接口,用于定義與映射文件對應(yīng)的方法。
Service 接口,用于封裝 Mapper 接口,提供統(tǒng)一的 CRUD 方法。
ServiceImpl 類,實現(xiàn) Service 接口,調(diào)用 Mapper 接口進行數(shù)據(jù)庫操作。

MyBatisPlus 的代碼主要涉及到以下幾個部分:
MyBatisPlus 的配置文件(mybatis-plus-config.xml),用于配置數(shù)據(jù)源、分頁插件等。
實體類(Entity),用于定義數(shù)據(jù)庫表對應(yīng)的實體類。
Mapper 接口,用于定義與數(shù)據(jù)庫表對應(yīng)的方法。
Service 接口,用于封裝 Mapper 接口,提供統(tǒng)一的 CRUD 方法。
ServiceImpl 類,實現(xiàn) Service 接口,調(diào)用 Mapper 接口進行數(shù)據(jù)庫操作。

3.兩者之間的差異

MyBatis 需要手動編寫 SQL 語句和結(jié)果映射,可以根據(jù)實際需求編寫 SQL 語句,但缺點是編寫映射文件和手動設(shè)置參數(shù)比較繁瑣。

MyBatisPlus 提供了一套通用的 CRUD 操作接口,自動生成 SQL 語句,簡化了 MyBatis 的開發(fā),提高了開發(fā)效率,但缺點是定制化能力較差,對于復(fù)雜的 SQL 語句無法滿足需求。

4.代碼解析

關(guān)于MyBatis 和MyBatisPlus的代碼分析用經(jīng)典的增刪查改來演示

 MyBatis實現(xiàn)增刪查改

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實現(xiàn)類

 @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實現(xiàn)增刪查改

1.引入依賴

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

2.創(chuàng)建用戶實體 

//實體
@Data
public class User {  
   private Long id;  
   private String username;  
   private String password;   
}

3.創(chuàng)建Mapper接口 

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

4.創(chuàng)建service接口

//Service接口 
 
public interface UserService extends IService<User> {  
}

5.創(chuàng)建一個 ServiceImpl 類,實現(xiàn)service接口 

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

6.創(chuàng)建一個 Controller 類處理對應(yīng)請求 

@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沒有對復(fù)雜SQL查詢操作進行封裝,但是它提供了一些輔助功能,可以幫助開發(fā)者更加方便地進行復(fù)雜SQL查詢操作。

到此這篇關(guān)于在Springboot中Mybatis與Mybatis-plus的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Springboot Mybatis與Mybatis-plus區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot項目如何使用外部application.yml配置文件啟動JAR包

    Spring Boot項目如何使用外部application.yml配置文件啟動JAR包

    文章介紹了SpringBoot項目通過指定外部application.yml配置文件啟動JAR包的方法,包括設(shè)置spring.config.location參數(shù)、打包注意事項及路徑格式要求,強調(diào)外部配置優(yōu)先級和覆蓋機制,提供Linux/Windows啟動示例,需要的朋友跟隨小編一起學(xué)習(xí)吧
    2025-08-08
  • java生成隨機圖片驗證碼

    java生成隨機圖片驗證碼

    這篇文章主要為大家詳細介紹了java生成隨機圖片驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java編程實現(xiàn)比對兩個文本文件并標記相同與不同之處的方法

    Java編程實現(xiàn)比對兩個文本文件并標記相同與不同之處的方法

    這篇文章主要介紹了Java編程實現(xiàn)比對兩個文本文件并標記相同與不同之處的方法,涉及java針對文本文件的讀取、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java實現(xiàn)單鏈表基礎(chǔ)操作

    Java實現(xiàn)單鏈表基礎(chǔ)操作

    大家好,本篇文章主要講的是Java實現(xiàn)單鏈表基礎(chǔ)操作,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Spring Boot 3.x 開發(fā)中分布式 Session 共享的序列化問題小結(jié)

    Spring Boot 3.x 開發(fā)中分布式 Session 共享的序

    分布式 Session 共享是構(gòu)建高可用應(yīng)用的關(guān)鍵技術(shù),而序列化則是其中的核心環(huán)節(jié),本文提供的方案和示例,希望能幫助開發(fā)者在Spring Boot 3.x 中從容應(yīng)對分布式Session 序列化的挑戰(zhàn),構(gòu)建穩(wěn)健的微服務(wù)架構(gòu),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Applet小應(yīng)用程序開發(fā)簡介

    Applet小應(yīng)用程序開發(fā)簡介

    Applet小應(yīng)用程序開發(fā)簡介 ,用java開發(fā)的小程序,需要的朋友可以參考下
    2012-09-09
  • 從java源碼分析線程池(池化技術(shù))的實現(xiàn)原理

    從java源碼分析線程池(池化技術(shù))的實現(xiàn)原理

    這篇文章主要介紹了從java源碼分析線程池(池化技術(shù))的實現(xiàn)原理,池化技術(shù)是一種編程技巧,當(dāng)程序出現(xiàn)高并發(fā)時,能夠明顯的優(yōu)化程序,降低系統(tǒng)頻繁創(chuàng)建銷毀連接等額外開銷,下文更多的相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • IDEA2020.2創(chuàng)建springboot項目卡死在reading maven project的問題

    IDEA2020.2創(chuàng)建springboot項目卡死在reading maven project的問題

    這篇文章主要介紹了關(guān)于2020.2IDEA用spring Initializr創(chuàng)建maven的springboot項目卡死在reading maven project的問題描述及解決方法,感興趣的朋友跟隨小編一起看看吧
    2020-09-09
  • Java中VM?options與Program?arguments的區(qū)別及說明

    Java中VM?options與Program?arguments的區(qū)別及說明

    本文介紹了VMoptions和Programarguments的區(qū)別及用法,說明它們分別用于設(shè)置運行環(huán)境變量和main方法參數(shù),且同名參數(shù)時Programarguments優(yōu)先,并展示了配置方法和結(jié)果
    2025-10-10
  • Mybatis中typeAliases的使用

    Mybatis中typeAliases的使用

    這篇文章主要介紹了Mybatis中typeAliases的使用,需要的朋友可以參考下
    2017-08-08

最新評論

乌兰县| 陕西省| 巴塘县| 和龙市| 息烽县| 开原市| 凤冈县| 双城市| 霸州市| 防城港市| 兴城市| 宁阳县| 平安县| 萝北县| 青州市| 宜城市| 镇原县| 绵竹市| 青海省| 台州市| 乐业县| 伊宁县| 宁海县| 九江县| 那坡县| 庐江县| 壤塘县| 临朐县| 神农架林区| 丁青县| 曲松县| 璧山县| 静安区| 天水市| 屯门区| 太白县| 商城县| 镇安县| 仙游县| 迭部县| 化隆|