springboot整合mybatis-plus實(shí)現(xiàn)多表分頁查詢的示例代碼
1.新建一個(gè)springboot工程
2.需要導(dǎo)入mybatis和mybatis-plus的依賴文件
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
3.application.yml配置文件
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC username: root password: 數(shù)據(jù)庫密碼 mybatis: mapper-locations: classpath*:mapper/*.xml mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml logging: level: com.tuanzi.*: debug
4.首先我們需要寫一個(gè)類來配置分頁插件
省略import
@EnableTransactionManagement
@Configuration
@MapperScan("com.tuanzi.*.mapper*")
public class MybatisPlusConfig {
/**
* 分頁插件
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
5.controller類
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
/**
* 多表關(guān)聯(lián),分頁查詢(1對1)
* @param page
* @return
*/
@RequestMapping("/findAll")
public Result<IPage<User>> findAll(@RequestBody Page<User> page){
return userService.pages(page);
}
/**
* 多表關(guān)聯(lián),分頁查詢(1對多)
* @param page
* @return
*/
@RequestMapping("/selectAll")
public Result<IPage<User>> selectAll(@RequestBody Page<User> page){
return userService.pageList(page);
}
}
6.service類
public interface UserService extends IService<User> {
Result<IPage<User>> pages(Page<User> page);
Result<IPage<User>> pageList(Page<User> page);
}
7.service實(shí)現(xiàn)類
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
UserMapper userMapper;
@Override
public Result<IPage<User>> pages(Page<User> page) {
IPage<User> userIPage = userMapper.Pages(page);
return Result.getSuccess("分頁查詢成功",userIPage);
}
@Override
public Result<IPage<User>> pageList(Page<User> page) {
IPage<User> userIPage = userMapper.pageList(page);
return Result.getSuccess("分頁查詢成功",userIPage);
}
}
8.mapper接口
注意!!: 如果入?yún)⑹怯卸鄠€(gè),需要加注解指定參數(shù)名才能在xml中取值
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
IPage<User> Pages(@Param("page") Page<User> page);
IPage<User> pageList(@Param("page") Page<User> page);
}
9.xml文件
一對一關(guān)聯(lián)
<!-- 一對一 通用查詢映射結(jié)果 -->
<resultMap id="BaseResultMap1" type="com.tuanzi.user.entity.User">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
<result column="email" property="email" />
<!--assocication 一對一關(guān)聯(lián)查詢
可以指定聯(lián)合的JavaBean對象
property="work"指定哪個(gè)屬性是聯(lián)合的對象
javaType:指定這個(gè)屬性對象的類型
-->
<association property="work" javaType="com.tuanzi.user.entity.Work">
<result column="id" property="id" />
<result column="position" property="position" />
<result column="user_id" property="userId" />
</association>
</resultMap>
一對多關(guān)聯(lián)
<!-- 一對多 通用查詢映射結(jié)果 -->
<resultMap id="BaseResultMap2" type="com.tuanzi.user.entity.User">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
<result column="email" property="email" />
<!--
collection定義關(guān)聯(lián)結(jié)合類型的屬性的封裝規(guī)則
property="workList"指定哪個(gè)屬性是聯(lián)合的對象
ofType:指定集合里面元素的類型
-->
<collection property="workList" ofType="com.tuanzi.user.entity.Work">
<result column="id" property="id" />
<result column="position" property="position" />
<result column="user_id" property="userId" />
</collection>
</resultMap>
SQL語句:
<select id="Pages" resultMap="BaseResultMap1">
select a.id id,a.name name,a.age age,a.email email,b.position position,b.user_id user_id from user a LEFT JOIN work b on a.id=b.user_id
</select>
<select id="pageList" resultMap="BaseResultMap2">
select a.id id,a.name name,a.age age,a.email email,b.position position,b.user_id user_id from user a LEFT JOIN work b on a.id=b.user_id
</select>
10.這樣就基本完成了!我這里省略了實(shí)體類
我們運(yùn)行一下,用postman測試一下結(jié)果
這里我們需要傳2個(gè)參數(shù),當(dāng)然我們也可以不用傳,因?yàn)閙ybatis-plus有默認(rèn)值
來看下mybatis-plus的page源碼

效果圖:


最后附贈源碼地址:demo
到此這篇關(guān)于springboot整合mybatis-plus實(shí)現(xiàn)多表分頁查詢的示例代碼的文章就介紹到這了,更多相關(guān)springboot整合mybatis-plus多表分頁查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot內(nèi)外部logback多環(huán)境配置詳解
本文主要介紹了Springboot內(nèi)外部logback多環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Mybatis-Plus中g(shù)etOne方法獲取最新一條數(shù)據(jù)的示例代碼
這篇文章主要介紹了Mybatis-Plus中g(shù)etOne方法獲取最新一條數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Java版C語言版簡單使用靜態(tài)語言實(shí)現(xiàn)動態(tài)數(shù)組的方法
本文給大家分享java版和C語言版簡單使用靜態(tài)語言實(shí)現(xiàn)動態(tài)數(shù)組的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-10
Mybatis分頁插件PageHelper配置及使用方法詳解
這篇文章主要介紹了Mybatis分頁插件PageHelper配置及使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java?List集合取交集的8種不同實(shí)現(xiàn)方式總結(jié)
工作中經(jīng)常遇到需要取兩個(gè)集合之間的交集、差集情況,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java?List集合取交集的8種不同實(shí)現(xiàn)方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容
這篇文章主要介紹了如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot整合MyBatis四種常用的分頁方式(詳細(xì)總結(jié))
這篇文章詳細(xì)給大家總結(jié)了SpringBoot整合MyBatis四種常用的分頁方式,文中通過代碼示例為大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07

