寧波論壇建站模板seo收費低
文章目錄
- 網(wǎng)站
- 使用方法
- 安裝
- 使用
- Lambda形式用法(MPJLambdaWrapper)
- 簡單的連表查詢
- 一對多查詢
網(wǎng)站
- 官方網(wǎng)站:https://mybatisplusjoin.com/
- Github地址:https://github.com/yulichang/mybatis-plus-join
- Gitee地址:https://gitee.com/best_handsome/mybatis-plus-join
使用方法
安裝
-
Maven
<dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><version>1.4.5</version> </dependency>
-
Gradle
implementation 'com.github.yulichang:mybatis-plus-join-boot-starter:1.4.5'
或者clone代碼到本地執(zhí)行 mvn install, 再引入以上依賴
注意: mybatis plus version >= 3.3.0
使用
- mapper繼承MPJBaseMapper (必選)
- service繼承MPJBaseService (可選)
- serviceImpl繼承MPJBaseServiceImpl (可選)
Lambda形式用法(MPJLambdaWrapper)
簡單的連表查詢
class test {@Resourceprivate UserMapper userMapper;void testJoin() {//和Mybatis plus一致,MPJLambdaWrapper的泛型必須是主表的泛型,并且要用主表的Mapper來調(diào)用MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class).selectAll(UserDO.class)//查詢user表全部字段.select(UserAddressDO::getTel)//查詢user_address tel 字段.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)//別名.select(AreaDO::getProvince, AreaDO::getCity).leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId).leftJoin(AreaDO.class, AreaDO::getId, UserAddressDO::getAreaId).eq(UserDO::getId, 1).like(UserAddressDO::getTel, "1").gt(UserDO::getId, 5);//連表查詢 返回自定義ResultTypeList<UserDTO> list = userMapper.selectJoinList(UserDTO.class, wrapper);//分頁查詢 (需要啟用 mybatis plus 分頁插件)Page<UserDTO> listPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, wrapper);}
}
對應(yīng)sql
SELECT t.id, t.name, t.sex, t.head_img, t1.tel, t1.address AS userAddress,t2.province, t2.city
FROM user t LEFT JOIN user_address t1 ON t1.user_id = t.id LEFT JOIN area t2 ON t2.id = t1.area_id
WHERE (t.id = ? AND t1.tel LIKE ? AND t.id > ?)
說明:
- UserDTO.class 查詢結(jié)果返回類(resultType)
- selectAll() 查詢指定實體類的全部字段
- select() 查詢指定的字段,支持可變參數(shù),同一個select只能查詢相同表的字段
- selectAs() 字段別名查詢,用于數(shù)據(jù)庫字段與業(yè)務(wù)實體類屬性名不一致時使用
- leftJoin() 參數(shù)說明
第一個參數(shù): 參與連表的實體類class
第二個參數(shù): 連表的ON字段,這個屬性必須是第一個參數(shù)實體類的屬性
第三個參數(shù): 參與連表的ON的另一個實體類屬性 - 默認(rèn)主表別名是t,其他的表別名以先后調(diào)用的順序使用t1,t2,t3…
- 條件查詢,可以查詢主表以及參與連接的所有表的字段,全部調(diào)用mp原生的方法,正常使用沒有sql注入風(fēng)險
一對多查詢
class test {@Resourceprivate UserMapper userMapper;@Testvoid testResultMap() {MPJLambdaWrapper<UserDO> wrapper = new MPJLambdaWrapper<>(User.class).selectAll(UserDO.class)//對多查詢.selectCollection(AddressDO.class, UesrDTO::getAddressList)//對一查詢.selectAssociation(AddressDO.class, UesrDTO::getAddress).leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId);List<UserDTO> dtoList = userMapper.selectJoinList(UserDTO.class, wrapper);//關(guān)于對多分頁查詢//由于嵌套結(jié)果方式會導(dǎo)致結(jié)果集被折疊,因此分頁查詢的結(jié)果在折疊后總數(shù)會減少,所以無法保證分頁結(jié)果數(shù)量正確。}
}
MPJLambdaWrapper其他功能
- 一對一,一對多使用
- 簡單的SQL函數(shù)使用
- ON語句多條件支持
- 其他全部功能請參考使用文檔