MyBatis基于XML的详细使用-参数、返回结果处理

本文介绍了MyBatis中基于XML的详细使用,涵盖参数的#{}与${}取值方式差异、参数传递、处理集合返回结果及自定义resultMap实现。通过EmpDao.xml、UserDao.java和EmpMapper.xml等实例,深入解析MyBatis的配置技巧。

1、参数的获取方式

2、参数的传递方式

3、处理集合返回结果

4、自定义结果集---resultMap

1、参数的取值方式

在xml文件中编写sql语句的时候有两种取值的方式,分别是#{}和${}, 下面来看一下他们之间的区别:

2、select的参数传递

 

 3、处理集合返回结果

EmpDao.xml

 UserDao.java

 

 4、自定义结果集­­­resultMap

EmpMapper.xml

 

需要该文章相关资料+代码,可关注作者,并私信【123】  ,免费获取

### 在 MyBatis-Plus 中使用 PageHelper 实现分页功能 MyBatis-Plus 是一个基于 MyBatis 的增强工具,提供了许多便捷的功能。虽然 MyBatis-Plus 自带分页插件,但也可以结合 PageHelper 来实现分页功能。以下是具体实现方法: #### 1. 引入依赖 在项目中引入 MyBatis-Plus 和 PageHelper 的依赖。通常情况下,可以通过 Maven 或 Gradle 添加以下依赖: ```xml <!-- MyBatis-Plus 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> </dependency> <!-- PageHelper 依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> ``` #### 2. 配置分页插件 为了确保分页功能正常工作,需要配置 MyBatis-Plus 的分页插件以及 PageHelper 的相关设置。 ##### (1) 配置 MyBatis-Plus 分页插件 创建一个配置类来注册 MyBatis-Plus 的分页插件: ```java import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } } ``` ##### (2) 配置 PageHelper PageHelper 默认会自动生效,但可以进一步优化其行为。例如,在 `application.yml` 文件中添加以下配置: ```yaml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql ``` #### 3. 使用 PageHelper 实现分页 在实际查询中,可以通过 PageHelper 提供的静态方法来实现分页功能。以下是一个示例代码: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { private final UserMapper userMapper; public UserService(UserMapper userMapper) { this.userMapper = userMapper; } public PageInfo<User> getUserList(int pageNum, int pageSize) { // 使用 PageHelper 开始分页 PageHelper.startPage(pageNum, pageSize); // 执行查询 LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getStatus, 1); // 示例条件 List<User> userList = userMapper.selectList(queryWrapper); // 获取分页结果 return new PageInfo<>(userList); } } ``` #### 4. 注意事项 - **线程安全**:PageHelper 使用了 `ThreadLocal` 存储分页参数,因此只要保证 `PageHelper.startPage` 方法调用后紧跟 MyBatis 查询方法,分页是安全的[^1]。 - **分页插件冲突**:如果同时使用 MyBatis-Plus 的分页插件和 PageHelper,可能会导致冲突。建议根据项目需求选择一种分页方式。 - **返回处理**:PageHelper 返回的是 `PageInfo<T>` 对象,而 MyBatis-Plus 返回的是 `IPage<T>` 对象。两者可以互相转换,但需要注意字段映射问题[^2]。 ### 示例代码 以下是一个完整的分页查询示例: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import java.util.List; public List<User> getUsersWithPageHelper(int page, int pageSize) { // 开始分页 PageHelper.startPage(page, pageSize); // 查询数据 LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(User::getName, "张三"); List<User> users = userMapper.selectList(queryWrapper); // 封装分页结果 PageInfo<User> pageInfo = new PageInfo<>(users); return pageInfo.getList(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值