日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

MyBatis-Plus 是一個基于 MyBatis 的增強工具,它提供了許多實用的功能和工具,可以大大簡化 MyBatis 的開發(fā)過程。本文將介紹 MyBatis-Plus 的使用過程、底層原理以及相關的代碼示例。

一、使用過程

1.1 添加依賴

首先,我們需要在項目中添加 MyBatis-Plus 的依賴。如果是 Maven 項目,在 pom.xml 文件中添加以下依賴即可:

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.3</version>
</dependency>

1.2 配置 MyBatis-Plus

接著,我們需要在 Spring 配置文件中配置 MyBatis-Plus。以下是一個簡單的配置示例:

<!-- 配置數據源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 配置 MyBatis-Plus -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mApperLocations" value="classpath*:mapper/*.xml" />
<property name="plugins">
<array>
<bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor" />
</array>
</property>
</bean>

在上面的配置中,我們配置了數據源和
MybatisSqlSessionFactoryBean,同時添加了一個分頁插件。

1.3 創(chuàng)建實體類和 Mapper 接口

接著,我們需要創(chuàng)建實體類和 Mapper 接口。這里以一個簡單的 User 實體類為例:

@Data
public class User {
private Long id;
private String name;
private Integer age;
private String emAIl;
}

Mapper 接口的創(chuàng)建也非常簡單,只需要繼承 BaseMapper 接口即可:

public interface UserMapper extends BaseMapper<User> {
}

1.4 使用 MyBatis-Plus 進行 CRUD 操作

MyBatis-Plus 提供了很多方便的 CRUD 操作方法,極大地簡化了我們的開發(fā)流程。下面我們來一一介紹。

1.4.1 增加數據

在 MyBatis-Plus 中,增加數據最常用的方法是 insert。在使用 insert 方法時,需要注意以下幾點:

1.4.1.1 自增主鍵

如果數據庫表中的主鍵是自增類型,那么插入數據時需要忽略主鍵字段,MyBatis-Plus 會自動為你生成一個自增主鍵。代碼如下:

User user = new User();
user.setName("test");
user.setAge(18);
userMapper.insert(user);

1.4.1.2 非自增主鍵

如果數據庫表中的主鍵不是自增類型,那么插入數據時需要設置主鍵字段的值。代碼如下:

User user = new User();
user.setId(1);
user.setName("test");
user.setAge(18);
userMapper.insert(user);

1.4.2 查詢數據

在 MyBatis-Plus 中,查詢數據最常用的方法是 select。在使用 select 方法時,需要注意以下幾點:

1.4.2.1 查詢全部數據

查詢全部數據可以使用 selectList 方法。代碼如下:

List<User> userList = userMapper.selectList(null);

其中,null 表示查詢條件為空,即查詢全部數據。

1.4.2.2 條件查詢

條件查詢可以使用 selectList 方法,并傳入一個 Wrapper 對象作為查詢條件。Wrapper 是 MyBatis-Plus 中用于封裝查詢條件的對象,包含多個查詢條件的方法。代碼如下:

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "test").gt("age", 18);
List<User> userList = userMapper.selectList(wrapper);

以上代碼表示查詢 name 等于 test 并且 age 大于 18 的用戶數據。

1.4.2.3 分頁查詢

分頁查詢可以使用 selectPage 方法,并傳入一個 Page 對象作為分頁參數。Page 是 MyBatis-Plus 中用于封裝分頁參數的對象。代碼如下:

Page<User> page = new Page<>(1, 10);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "test").gt("age", 18);
IPage<User> userPage = userMapper.selectPage(page, wrapper);
List<User> userList = userPage.getRecords();

以上代碼表示查詢 name 等于 test 并且 age 大于 18 的用戶數據,返回第一頁的數據,每頁數據量為 10 條。

1.4.3 修改數據

在 MyBatis-Plus 中,修改數據最常用的方法是 update。在使用 update 方法時,需要注意以下幾點:

1.4.3.1 更新全部數據

更新全部數據操作使用的方法是 update,其操作類似于 delete 和 select。我們可以通過創(chuàng)建一個 UpdateWrapper 對象來構建更新條件,再通過 update 方法來執(zhí)行更新操作。

以下是一個示例代碼,演示了如何使用 MyBatis-Plus 進行全部數據的更新:

// 創(chuàng)建一個 UpdateWrapper 對象
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
// 設置更新條件
updateWrapper.lambda().eq(User::getAge, 18);
// 創(chuàng)建一個 User 對象,表示更新后的值
User user = new User();
user.setAge(20);
// 調用 update 方法執(zhí)行更新操作
userMapper.update(user, updateWrapper);

上面的代碼中,我們通過 UpdateWrapper 對象設置了更新條件,然后創(chuàng)建了一個 User 對象表示更新后的值,最后通過 update 方法執(zhí)行更新操作。

這里需要注意的是,UpdateWrapper 對象的 lambda 方法中的參數為一個函數式接口,可以通過 User::getAge 來指定更新條件的字段,然后通過 eq 方法來設置具體的條件。

更新操作的返回值為更新的數據行數,可以根據需要進行處理。

除了上述示例中的更新全部數據操作,MyBatis-Plus 還支持更新單個數據和批量更新數據的操作,這里就不再贅述。

至此,我們已經介紹了 MyBatis-Plus 的 CRUD 操作,包括查詢、新增、刪除和更新。在實際應用中,我們可以根據需要選擇相應的操作方法,并結合 MyBatis-Plus 的其他特性,快速高效地開發(fā)出符合業(yè)務需求的應用程序。

二、底層原理

MyBatis-Plus是基于MyBatis框架的增強工具,旨在簡化開發(fā)過程,提高開發(fā)效率。其底層原理主要是通過MyBatis提供的插件機制和反射機制實現的。

MyBatis-Plus 的核心是
MybatisSqlSessionFactoryBean,該類繼承了 SqlSessionFactoryBean,并且覆蓋了 getObject 方法。getObject 方法中調用了父類的 getObject 方法獲取 SqlSessionFactory 實例,然后將其包裝成 MybatisSqlSessionTemplate 對象并返回。

在 MybatisSqlSessionTemplate 中,MyBatis-Plus 又對 SqlSession 進行了封裝,提供了諸如 insert、delete、update、select 等方法,并且提供了 LambdaQueryWrapper、LambdaUpdateWrapper、LambdaDeleteWrapper 等對象,可以使得操作數據庫更加簡單和易于理解。

同時,MyBatis-Plus 還提供了一些擴展功能,如自動填充字段值、分頁查詢、樂觀鎖、多租戶等。

MyBatis提供了一個攔截器接口Interceptor,可以通過該接口在MyBatis執(zhí)行SQL語句的不同階段進行攔截和處理。MyBatis-Plus通過實現Interceptor接口,對MyBatis的SQL執(zhí)行過程進行攔截,并在執(zhí)行前后添加自己的邏輯處理,從而實現了對MyBatis的增強。

下面是一個簡單的代碼示例,對比了使用MyBatis和使用MyBatis-Plus進行分頁查詢的不同之處。

使用MyBatis實現分頁查詢:

public interface UserMapper {
List<User> findUsers(@Param("offset") int offset, @Param("limit") int limit);
}
<select id="findUsers" resultType="User">
select * from user
limit #{offset}, #{limit}
</select>

使用MyBatis-Plus實現分頁查詢:

Page<User> page = new Page<>(1, 10);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18);
IPage<User> userIPage = userMapper.selectPage(page, wrapper);
List<User> records = userIPage.getRecords();

可以看到,使用MyBatis-Plus進行分頁查詢時,只需要創(chuàng)建一個Page對象和一個QueryWrapper對象,然后調用selectPage方法即可完成分頁查詢。而使用MyBatis則需要手動編寫SQL語句,并在SQL語句中使用limit關鍵字進行分頁。

總的來說,MyBatis-Plus的底層原理是通過實現MyBatis的插件機制和反射機制,對MyBatis的SQL執(zhí)行過程進行攔截和增強,從而實現對MyBatis的簡化和增強,使得操作數據庫更加方便。

分享到:
標簽:MyBatis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰(zhàn)2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定