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

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

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

引言

MyBatis是一個(gè)優(yōu)秀的持久層框架,它對JDBC的操作數(shù)據(jù)庫的過程進(jìn)行封裝。MyBatisPlus (簡稱 MP)是一個(gè) MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(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 是一個(gè) 半自動的ORM(Object Relation Mapping)框架

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

2.代碼的區(qū)別

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

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

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

3.兩者之間的差異

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

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

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

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

相關(guān)文章

最新評論

镇平县| 黎平县| 宜君县| 衡南县| 金塔县| 方城县| 郯城县| 青铜峡市| 绵竹市| 左云县| 新乡县| 木兰县| 靖州| 深泽县| 龙川县| 灵璧县| 个旧市| 怀集县| 禹城市| 台中市| 佛学| 临洮县| 会宁县| 义乌市| 简阳市| 汨罗市| 乡宁县| 安陆市| 宁乡县| 疏勒县| 翁源县| 南靖县| 钦州市| 福泉市| 当雄县| 洞头县| 大厂| 务川| 买车| 南皮县| 通城县|