Mybatis 3.4以下分页效果实现代码示例

0 下载量 127 浏览量 更新于2024-09-01 收藏 249KB PDF 举报
"本文将详细介绍MyBatis版本3.4及以下如何实现分页效果,通过结合Spring MVC和MyBatis的配置,展示一个具体的代码示例。首先,我们将从Spring MVC的配置文件`spring-mvc.xml`入手,该文件定义了自动扫描注解包的规则以及视图解析器的设置。 在`spring-mvc.xml`中,我们看到`<context:component-scan>`标签用于自动扫描指定包下的所有带有注解的Java类,如@Repository、@Service和@Controller等。这里指定的`base-package`属性为`com.ij34.bean`,这意味着Spring会查找该路径下的Java类来初始化bean。 接下来是`<bean id="viewResolver">`部分,内部资源视图解析器`InternalResourceViewResolver`被用来映射请求到JSP视图。`prefix`属性设置了视图文件的前缀,这里是`/WEB-INF/view/`,`suffix`属性则是后缀名,设置为`.jsp`。 然后转向MyBatis的部分,通常在Spring Boot项目中,我们会使用`applicationContext.xml`或者在YAML文件中配置数据源和MyBatis的SqlSessionFactory。然而,由于没有提供这部分的代码,我们可以假设在这个配置文件中已经包含了数据源的设置,以及MyBatis的配置,例如: ```xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 这里添加MyBatis的配置,如mapperScannerBasePackage、typeAliasesPackage等 --> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ij34.mapper"/> </bean> ``` 在MyBatis中实现分页,我们需要编写Mapper接口,并在对应的XML文件中配置分页插件。例如,使用MyBatis-PageHelper插件,可以在Mapper接口中声明分页查询方法: ```java import com.github.pagehelper.Page; import com.github.pagehelper.PageInfo; public interface UserMapper { @Select("SELECT * FROM user") Page<User> findAll(@Param("params") PageHelper parameters); // 参数params包含当前页码和每页大小 } ``` 在XML文件中,引入PageHelper的配置: ```xml <mapper namespace="com.ij34.mapper.UserMapper"> <select id="findAll" parameterType="com.github.pagehelper.PageHelper" resultType="User"> SELECT * FROM user </select> </mapper> ``` 然后在Controller层,调用这个分页查询并传递参数,如页码和每页大小: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/{pageNumber}/{pageSize}") public PageInfo<User> getUsers(int pageNumber, int pageSize) { PageHelper.startPage(pageNumber, pageSize); return userMapper.findAll(); } } ``` 通过这种方式,Spring MVC和MyBatis的配合使得分页效果在RESTful API中得以实现。当用户请求特定页面的数据时,Controller会调用UserMapper的分页查询方法,返回指定页码的用户列表,而PageHelper则负责处理实际的分页逻辑。这样,无论是前端还是后端,都可以方便地进行分页浏览数据。"