亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

引言

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

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

1.特性

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

 MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數(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 接口,用于定義與映射文件對應的方法。
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ù)庫表對應的實體類。
Mapper 接口,用于定義與數(shù)據(jù)庫表對應的方法。
Service 接口,用于封裝 Mapper 接口,提供統(tǒng)一的 CRUD 方法。
ServiceImpl 類,實現(xiàn) Service 接口,調(diào)用 Mapper 接口進行數(shù)據(jù)庫操作。

3.兩者之間的差異

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

MyBatisPlus 提供了一套通用的 CRUD 操作接口,自動生成 SQL 語句,簡化了 MyBatis 的開發(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 類處理對應請求 

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

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

相關(guān)文章

  • MyBatis在Mapper中傳遞多個參數(shù)的四種方法詳解

    MyBatis在Mapper中傳遞多個參數(shù)的四種方法詳解

    這篇文章主要介紹了MyBatis在Mapper中傳遞多個參數(shù)的四種方法,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,,需要的朋友可以參考下
    2023-09-09
  • vue+springboot讀取git的markdown文件并展示功能

    vue+springboot讀取git的markdown文件并展示功能

    Markdown-it 是一個用于解析和渲染 Markdown 標記語言的 JavaScript 庫,使用 Markdown-it,你可以將 Markdown 文本解析為 HTML 輸出,并且可以根據(jù)需要添加功能、擴展語法或修改解析行為,本文介紹vue+springboot讀取git的markdown文件并展示,感興趣的朋友一起看看吧
    2024-01-01
  • 淺談Spring中的循環(huán)依賴問題與解決方案

    淺談Spring中的循環(huán)依賴問題與解決方案

    這篇文章主要介紹了淺談Spring中的循環(huán)依賴問題與解決方案,循環(huán)依賴就是兩個或則兩個以上的bean互相持有對方,最終形成閉環(huán),比如A依賴于B,B依賴于C,C又依賴于A,需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)二叉搜索樹的插入、刪除功能

    Java實現(xiàn)二叉搜索樹的插入、刪除功能

    這篇文章主要介紹了Java實現(xiàn)二叉搜索樹的插入、刪除,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • MyBatis Plus 將查詢結(jié)果封裝到指定實體的方法步驟

    MyBatis Plus 將查詢結(jié)果封裝到指定實體的方法步驟

    這篇文章主要介紹了MyBatis Plus 將查詢結(jié)果封裝到指定實體的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 一篇文章帶你理解Java Spring三級緩存和循環(huán)依賴

    一篇文章帶你理解Java Spring三級緩存和循環(huán)依賴

    這篇文章主要介紹了淺談Spring 解決循環(huán)依賴必須要三級緩存嗎,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • Java編程之內(nèi)置觀察者模式實例詳解

    Java編程之內(nèi)置觀察者模式實例詳解

    這篇文章主要介紹了Java編程之內(nèi)置觀察者模式,結(jié)合實例形式較為詳細的分析了java內(nèi)置觀察者模式的原理、實現(xiàn)方法及相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • Spring集成事務代碼實例

    Spring集成事務代碼實例

    這篇文章主要介紹了Spring集成事務代碼實例,pring事務的本質(zhì)其實就是數(shù)據(jù)庫對事務的支持,使用JDBC的事務管理機制,就是利用java.sql.Connection對象完成對事務的提交,需要的朋友可以參考下
    2023-10-10
  • Java中支持可變參數(shù)詳解

    Java中支持可變參數(shù)詳解

    那個可變參數(shù)的就是個數(shù)組,你傳多少個參數(shù)都被放到那個數(shù)組里面。這樣方便了程序員,因為如果不確定要傳的參數(shù)的個數(shù)的話,我們要寫帶1個參數(shù)的,帶2個參數(shù),帶3個參數(shù)的,這樣很麻煩。 該進后的這個方法,我們只要寫一個函數(shù)就好,可以傳任意個參數(shù)。
    2015-05-05
  • java實現(xiàn)簡單的俄羅斯方塊

    java實現(xiàn)簡單的俄羅斯方塊

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單的俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論