欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

引言

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

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

1.特性

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

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

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

MyBatis 是一個(gè) 半自動(dòng)的ORM(Object Relation Mapping)框架

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

2.代碼的區(qū)別

MyBatis 的代碼主要分為以下幾個(gè)部分:

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

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

3.兩者之間的差異

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

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

4.代碼解析

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

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

1.引入依賴

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

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

//實(shí)體
@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)建一個(gè) ServiceImpl 類,實(shí)現(xiàn)service接口 

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

6.創(chuàng)建一個(gè) Controller 類處理對(duì)應(yīng)請(qǐ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沒有對(duì)復(fù)雜SQL查詢操作進(jìn)行封裝,但是它提供了一些輔助功能,可以幫助開發(fā)者更加方便地進(jìn)行復(fù)雜SQL查詢操作。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Spring集成事務(wù)代碼實(shí)例

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

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

    那個(gè)可變參數(shù)的就是個(gè)數(shù)組,你傳多少個(gè)參數(shù)都被放到那個(gè)數(shù)組里面。這樣方便了程序員,因?yàn)槿绻淮_定要傳的參數(shù)的個(gè)數(shù)的話,我們要寫帶1個(gè)參數(shù)的,帶2個(gè)參數(shù),帶3個(gè)參數(shù)的,這樣很麻煩。 該進(jìn)后的這個(gè)方法,我們只要寫一個(gè)函數(shù)就好,可以傳任意個(gè)參數(shù)。
    2015-05-05
  • java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊

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

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

最新評(píng)論