一、介紹
MyBatis和MyBatis-Plus都是Java持久化框架,用于簡(jiǎn)化數(shù)據(jù)庫(kù)訪問(wèn)和操作。它們提供了面向?qū)ο蟮姆绞絹?lái)管理關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
MyBatis是一個(gè)輕量級(jí)的持久化框架,通過(guò)XML或注解配置,將SQL語(yǔ)句與Java對(duì)象進(jìn)行映射,使開發(fā)者可以使用簡(jiǎn)單的API來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作。MyBatis支持動(dòng)態(tài)SQL、緩存、批處理等功能,并與多種數(shù)據(jù)庫(kù)兼容。
MyBatis-Plus是在MyBatis的基礎(chǔ)上構(gòu)建的增強(qiáng)版框架。它提供了更多的便利功能和增強(qiáng)特性,使開發(fā)者能夠更加高效地進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)。MyBatis-Plus內(nèi)置了常見的CRUD操作方法,還提供了代碼生成器、分頁(yè)插件、邏輯刪除、多租戶支持等功能,大大簡(jiǎn)化了開發(fā)流程。
總結(jié)而言,MyBatis是一個(gè)成熟且靈活的持久化框架,而MyBatis-Plus則是在此基礎(chǔ)上進(jìn)行了擴(kuò)展和增強(qiáng),提供了更多的便利功能和工具。選擇使用哪個(gè)框架取決于項(xiàng)目需求和個(gè)人偏好。
二、MyBatis與MyBatis-Plus區(qū)別
1、MyBatis:
特點(diǎn):
MyBatis是一款持久層框架,它通過(guò)XML或注解配置SQL映射關(guān)系,將數(shù)據(jù)庫(kù)操作與Java對(duì)象的映射分離。它提供了靈活的SQL編寫方式,支持動(dòng)態(tài)SQL和批量操作等功能。
優(yōu)點(diǎn):
1、靈活性高:MyBatis通過(guò)XML或注解配置SQL語(yǔ)句,可以滿足各種復(fù)雜的SQL需求,包括動(dòng)態(tài)SQL、復(fù)雜查詢等。
2、性能好:MyBatis可以手動(dòng)優(yōu)化SQL語(yǔ)句,保證數(shù)據(jù)庫(kù)訪問(wèn)的效率。
3、易于集成:MyBatis可以與各種第三方框架(如Spring)無(wú)縫集成,使用起來(lái)比較方便。
缺點(diǎn):
1、編寫工作量大:相對(duì)于其他ORM框架,MyBatis需要手動(dòng)編寫SQL語(yǔ)句,會(huì)增加一定的開發(fā)工作量。
2、學(xué)習(xí)成本較高:MyBatis需要掌握SQL語(yǔ)句的編寫和框架的配置,對(duì)于初學(xué)者來(lái)說(shuō),學(xué)習(xí)曲線較陡峭。
2、MyBatis-Plus
特點(diǎn):
MyBatis-Plus是在MyBatis基礎(chǔ)上進(jìn)行封裝的增強(qiáng)工具,提供了更便捷的CRUD操作和一些常用功能的封裝。
優(yōu)點(diǎn):
1、簡(jiǎn)化開發(fā):MyBatis-Plus提供了一系列的CRUD操作方法和查詢構(gòu)造器,可以極大地簡(jiǎn)化開發(fā)過(guò)程,減少重復(fù)代碼的編寫。
2、更加易用:MyBatis-Plus提供了一些常用功能的封裝,如分頁(yè)查詢、邏輯刪除等,開發(fā)人員可以更輕松地使用這些功能,提高開發(fā)效率。
3、自動(dòng)生成CRUD方法:MyBatis-Plus支持根據(jù)數(shù)據(jù)庫(kù)表自動(dòng)生成對(duì)應(yīng)的實(shí)體類和Mapper接口,大大減少了手動(dòng)編寫CRUD方法的工作量。
缺點(diǎn):
1、對(duì)于復(fù)雜SQL的支持較弱:相比于MyBatis,MyBatis-Plus在處理一些復(fù)雜的SQL語(yǔ)句時(shí),可能會(huì)有一定的限制。
區(qū)別:
主要區(qū)別如下:
1、MyBatis需要手動(dòng)傳遞offset
和limit
參數(shù),而MyBatis-Plus使用Page
對(duì)象來(lái)封裝分頁(yè)信息。
2、MyBatis-Plus提供了更簡(jiǎn)單的API,如selectPage()
,可以自動(dòng)計(jì)算總記錄數(shù)并返回分頁(yè)結(jié)果。
3、MyBatis-Plus還提供了更多高級(jí)的分頁(yè)查詢功能,如排序、自定義SQL等。
選擇使用哪種方式取決于個(gè)人偏好和項(xiàng)目需求。如果你希望更簡(jiǎn)潔、方便的方式實(shí)現(xiàn)分頁(yè)查詢,可以考慮使用MyBatis-Plus。
三、MyBatis分頁(yè)
在MyBatis中,分頁(yè)查詢需要使用兩個(gè)參數(shù):offset
(偏移量)和limit
(限制數(shù)量),它們用于控制查詢結(jié)果的起始位置和返回的記錄數(shù)。下面是一個(gè)使用MyBatis進(jìn)行分頁(yè)查詢的示例:
@Mapper
public interface UserMapper {
List<User> getUsers(@Param("offset") int offset, @Param("limit") int limit);
}
然后,在XML映射文件中,使用${}
占位符來(lái)引用這兩個(gè)參數(shù):?
<select id="getUsers" resultType="User">
SELECT * FROM users
LIMIT #{offset}, #{limit}
</select>
?通過(guò)傳遞正確的offset
和limit
值,可以實(shí)現(xiàn)分頁(yè)查詢。
四、MyBatis-Plus分頁(yè)
相比之下,MyBatis-Plus提供了更簡(jiǎn)單的分頁(yè)查詢方式。它引入了一個(gè)Page
對(duì)象,該對(duì)象封裝了與分頁(yè)相關(guān)的信息,如當(dāng)前頁(yè)碼、每頁(yè)記錄數(shù)等。下面是使用MyBatis-Plus進(jìn)行分頁(yè)查詢的示例:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> getUsers(int pageNo, int pageSize) {
Page<User> page = new Page<>(pageNo, pageSize);
return userMapper.selectPage(page, null);
}
}
在這個(gè)例子中,Page<User>
對(duì)象用于封裝分頁(yè)信息,并且通過(guò)userMapper.selectPage()
方法進(jìn)行查詢。
需要注意的是,MyBatis-Plus還提供了更多高級(jí)的分頁(yè)查詢功能,例如自動(dòng)計(jì)算總記錄數(shù)、排序等。
五、MyBatis向MyBatis-Plus轉(zhuǎn)換
步驟 1:添加相關(guān)依賴
首先,在項(xiàng)目的構(gòu)建文件中(如Maven的pom.xml或Gradle的build.gradle)添加MyBatis-Plus的依賴。根據(jù)你的具體需求和項(xiàng)目環(huán)境,可以在這里找到相應(yīng)的依賴:MyBatis-Plus官方文檔
步驟 2:修改Mapper接口
在Mapper接口中,使用com.baomidou.mybatisplus.core.mapper.BaseMapper
作為父接口,該接口包含了MyBatis-Plus提供的CRUD方法以及分頁(yè)查詢方法。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface YourMapper extends BaseMapper<YourEntity> {
}
步驟 3:配置分頁(yè)插件
在MyBatis的配置文件中(通常是mybatis-config.xml
),添加MyBatis-Plus的分頁(yè)插件配置。這個(gè)插件會(huì)自動(dòng)攔截原本的分頁(yè)查詢語(yǔ)句并實(shí)現(xiàn)分頁(yè)功能。
<configuration>
<!-- 其他配置 -->
<plugins>
<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
<property name="dialectType" value="mysql"/> <!-- 數(shù)據(jù)庫(kù)類型 -->
</plugin>
</plugins>
</configuration>
步驟 4:修改分頁(yè)查詢方法
在原先的分頁(yè)查詢方法中,將PageHelper.startPage()
替換為MyBatis-Plus提供的com.baomidou.mybatisplus.extension.plugins.pagination.Page
對(duì)象,并調(diào)用對(duì)應(yīng)的分頁(yè)方法。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-682482.html
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
@Repository
public class YourRepository {
private final YourMapper yourMapper;
public YourRepository(YourMapper yourMapper) {
this.yourMapper = yourMapper;
}
public Page<YourEntity> findEntitiesWithPagination(int pageNum, int pageSize) {
return yourMapper.selectPage(new Page<>(pageNum, pageSize), null);
}
}
這樣就完成了將MyBatis的分頁(yè)改為MyBatis-Plus的分頁(yè)的步驟。請(qǐng)根據(jù)你的具體項(xiàng)目和需求進(jìn)行相應(yīng)的修改和調(diào)整。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-682482.html
到了這里,關(guān)于MyBatis與MyBatis-Plus的分頁(yè)以及轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!