首页 文章资讯内容详情

SpringBoot与PageHelper的整合示例详解

2026-06-01 4 花语

本文内容纲要:

-SpringBoot与PageHelper的整合示例详解

SpringBoot与PageHelper的整合示例详解

1.PageHelper简介

PageHelper官网地址:

https://pagehelper.github.io/

摘要:com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。

原本以为分页插件,应该是很简单的,然而PageHelper比我想象的要复杂许多,它做的很强大,也很彻底,强大到使用者可能并不需要这么多功能,彻底到一参可以两用。但是,我认为,作为分页插件,完成物理分页任务是根本,其它的很多智能并不是必要的,保持它够傻够憨,专业术语叫stupid,简单就是美。

我们将简单介绍PageHelper的基本使用和配置参数的含义,重点分析PageHelper作为Mybatis分页插件的实现原理。

2.SpringBoot与PageHelper的整合示例 结构图如下: pom.xml: <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.home</groupId> <artifactId>springbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springbootdemo</name> <description>DemoprojectforSpringBoot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mybatis与mysql--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--druid依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.25</version> </dependency> <!--redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--pageHelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--热部署模块--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional><!--这个需要为true热部署才有效--> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project> OrderPresentController: packagecom.home.orderpresentdemo.controller; importcom.github.pagehelper.PageInfo; importcom.home.orderpresentdemo.entity.OrderPresentInfo; importcom.home.orderpresentdemo.service.OrderPresentInfoService; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Controller; importorg.springframework.ui.Model; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.ResponseBody; importjava.util.HashMap; importjava.util.List; @Controller @RequestMapping("/") publicclassOrderPresentController{ @Autowired privateOrderPresentInfoServiceorderPresentService; /** *跳转到应用列表页面 *@parampageNo要显示第几页内容 *@parampageSize一页显示多少条 *@return */ @RequestMapping("/list") @ResponseBody publicPageInfo<OrderPresentInfo>list(@RequestParam(value="pageNo",defaultValue="1")intpageNo,@RequestParam(value="pageSize",defaultValue="10")intpageSize){ PageInfo<OrderPresentInfo>page=orderPresentService.getAllOrderPresentForPage(pageNo,pageSize); returnpage; } @RequestMapping("/") publicStringhelloHtml(HashMap<String,Object>map,Modelmodel){ model.addAttribute("say","欢迎欢迎,热烈欢迎"); map.put("hello","欢迎进入HTML页面"); return"index"; } @RequestMapping("/goToAdd") publicStringgoToAdd(){ return"add"; } @RequestMapping("/add") publicStringadd(OrderPresentInfoorderPresent){ return"添加成功"; } } OrderPresentInfoService: packagecom.home.orderpresentdemo.service; importcom.github.pagehelper.PageInfo; importcom.home.orderpresentdemo.entity.OrderPresentInfo; importjava.util.List; publicinterfaceOrderPresentInfoService{ List<OrderPresentInfo>getAllOrderPresent(); PageInfo<OrderPresentInfo>getAllOrderPresentForPage(intpageNo,intpageSize); } OrderPresentInfoServiceImpl: packagecom.home.orderpresentdemo.service.impl; importcom.github.pagehelper.PageHelper; importcom.github.pagehelper.PageInfo; importcom.home.orderpresentdemo.entity.OrderPresentInfo; importcom.home.orderpresentdemo.mapper.OrderPresentInfoMapper; importcom.home.orderpresentdemo.service.OrderPresentInfoService; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Service; importjava.util.List; @Service publicclassOrderPresentInfoServiceImplimplementsOrderPresentInfoService{ @Autowired privateOrderPresentInfoMapperorderPresentMapper; @Override publicList<OrderPresentInfo>getAllOrderPresent(){ returnorderPresentMapper.getAllOrderPresent(); } @Override publicPageInfo<OrderPresentInfo>getAllOrderPresentForPage(intpageNo,intpageSize){ PageHelper.startPage(pageNo,pageSize); List<OrderPresentInfo>allOrderPresentList=orderPresentMapper.getAllOrderPresent(); PageInfo<OrderPresentInfo>pageInfo=newPageInfo<>(allOrderPresentList); returnpageInfo; } } OrderPresentInfo: packagecom.home.orderpresentdemo.entity; importjava.math.BigDecimal; importjava.util.Date; publicclassOrderPresentInfo{ privateLongid; privateStringactivityName; privateDatebeginTime; privateDateendTime; privateIntegeractivityStoresSelectType; privateStringactivityStoresIds; privateIntegermemberLevelSelectType; privateStringmemberLevelIds; privateBigDecimalactivityOrderConsume; privateStringpaymentChannelIds; privateIntegerequityType; privateLongcouponId; privateLongluckyTurningId; privateIntegeractivityStatus; privateDatecreateTime; privateDateupdateTime; publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetActivityName(){ returnactivityName; } publicvoidsetActivityName(StringactivityName){ this.activityName=activityName==null?null:activityName.trim(); } publicDategetBeginTime(){ returnbeginTime; } publicvoidsetBeginTime(DatebeginTime){ this.beginTime=beginTime; } publicDategetEndTime(){ returnendTime; } publicvoidsetEndTime(DateendTime){ this.endTime=endTime; } publicIntegergetActivityStoresSelectType(){ returnactivityStoresSelectType; } publicvoidsetActivityStoresSelectType(IntegeractivityStoresSelectType){ this.activityStoresSelectType=activityStoresSelectType; } publicStringgetActivityStoresIds(){ returnactivityStoresIds; } publicvoidsetActivityStoresIds(StringactivityStoresIds){ this.activityStoresIds=activityStoresIds==null?null:activityStoresIds.trim(); } publicIntegergetMemberLevelSelectType(){ returnmemberLevelSelectType; } publicvoidsetMemberLevelSelectType(IntegermemberLevelSelectType){ this.memberLevelSelectType=memberLevelSelectType; } publicStringgetMemberLevelIds(){ returnmemberLevelIds; } publicvoidsetMemberLevelIds(StringmemberLevelIds){ this.memberLevelIds=memberLevelIds==null?null:memberLevelIds.trim(); } publicBigDecimalgetActivityOrderConsume(){ returnactivityOrderConsume; } publicvoidsetActivityOrderConsume(BigDecimalactivityOrderConsume){ this.activityOrderConsume=activityOrderConsume; } publicStringgetPaymentChannelIds(){ returnpaymentChannelIds; } publicvoidsetPaymentChannelIds(StringpaymentChannelIds){ this.paymentChannelIds=paymentChannelIds==null?null:paymentChannelIds.trim(); } publicIntegergetEquityType(){ returnequityType; } publicvoidsetEquityType(IntegerequityType){ this.equityType=equityType; } publicLonggetCouponId(){ returncouponId; } publicvoidsetCouponId(LongcouponId){ this.couponId=couponId; } publicLonggetLuckyTurningId(){ returnluckyTurningId; } publicvoidsetLuckyTurningId(LongluckyTurningId){ this.luckyTurningId=luckyTurningId; } publicIntegergetActivityStatus(){ returnactivityStatus; } publicvoidsetActivityStatus(IntegeractivityStatus){ this.activityStatus=activityStatus; } publicDategetCreateTime(){ returncreateTime; } publicvoidsetCreateTime(DatecreateTime){ this.createTime=createTime; } publicDategetUpdateTime(){ returnupdateTime; } publicvoidsetUpdateTime(DateupdateTime){ this.updateTime=updateTime; } } OrderPresentInfoMapper: packagecom.home.orderpresentdemo.mapper; importcom.home.orderpresentdemo.entity.OrderPresentInfo; importorg.apache.ibatis.annotations.Mapper; importjava.util.List; @Mapper publicinterfaceOrderPresentInfoMapper{ intdeleteByPrimaryKey(Longid); intinsert(OrderPresentInforecord); intinsertSelective(OrderPresentInforecord); OrderPresentInfoselectByPrimaryKey(Longid); intupdateByPrimaryKeySelective(OrderPresentInforecord); intupdateByPrimaryKey(OrderPresentInforecord); List<OrderPresentInfo>getAllOrderPresent(); } OrderPresentInfoMapper.xml: <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mappernamespace="com.home.orderpresentdemo.mapper.OrderPresentInfoMapper"> <resultMapid="BaseResultMap"type="com.home.orderpresentdemo.entity.OrderPresentInfo"> <idcolumn="ID"property="id"jdbcType="BIGINT"/> <resultcolumn="ACTIVITY_NAME"property="activityName"jdbcType="VARCHAR"/> <resultcolumn="BEGIN_TIME"property="beginTime"jdbcType="TIMESTAMP"/> <resultcolumn="END_TIME"property="endTime"jdbcType="TIMESTAMP"/> <resultcolumn="ACTIVITY_STORES_SELECT_TYPE"property="activityStoresSelectType"jdbcType="INTEGER"/> <resultcolumn="ACTIVITY_STORES_IDS"property="activityStoresIds"jdbcType="VARCHAR"/> <resultcolumn="MEMBER_LEVEL_SELECT_TYPE"property="memberLevelSelectType"jdbcType="INTEGER"/> <resultcolumn="MEMBER_LEVEL_IDS"property="memberLevelIds"jdbcType="VARCHAR"/> <resultcolumn="ACTIVITY_ORDER_CONSUME"property="activityOrderConsume"jdbcType="DECIMAL"/> <resultcolumn="PAYMENT_CHANNEL_IDS"property="paymentChannelIds"jdbcType="VARCHAR"/> <resultcolumn="EQUITY_TYPE"property="equityType"jdbcType="INTEGER"/> <resultcolumn="COUPON_ID"property="couponId"jdbcType="BIGINT"/> <resultcolumn="LUCKY_TURNING_ID"property="luckyTurningId"jdbcType="BIGINT"/> <resultcolumn="ACTIVITY_STATUS"property="activityStatus"jdbcType="INTEGER"/> <resultcolumn="CREATE_TIME"property="createTime"jdbcType="TIMESTAMP"/> <resultcolumn="UPDATE_TIME"property="updateTime"jdbcType="TIMESTAMP"/> </resultMap> <sqlid="Base_Column_List"> ID,ACTIVITY_NAME,BEGIN_TIME,END_TIME,ACTIVITY_STORES_SELECT_TYPE,ACTIVITY_STORES_IDS, MEMBER_LEVEL_SELECT_TYPE,MEMBER_LEVEL_IDS,ACTIVITY_ORDER_CONSUME,PAYMENT_CHANNEL_IDS, EQUITY_TYPE,COUPON_ID,LUCKY_TURNING_ID,ACTIVITY_STATUS,CREATE_TIME,UPDATE_TIME </sql> <selectid="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="java.lang.Long"> select <includerefid="Base_Column_List"/> fromdss_wsh_order_present_info whereID=#{id,jdbcType=BIGINT} </select> <selectid="getAllOrderPresent"resultMap="BaseResultMap"> select <includerefid="Base_Column_List"/> fromdss_wsh_order_present_info </select> <deleteid="deleteByPrimaryKey"parameterType="java.lang.Long"> deletefromdss_wsh_order_present_info whereID=#{id,jdbcType=BIGINT} </delete> <insertid="insert"parameterType="com.home.orderpresentdemo.entity.OrderPresentInfo"> insertintodss_wsh_order_present_info(ID,ACTIVITY_NAME,BEGIN_TIME, END_TIME,ACTIVITY_STORES_SELECT_TYPE,ACTIVITY_STORES_IDS, MEMBER_LEVEL_SELECT_TYPE,MEMBER_LEVEL_IDS, ACTIVITY_ORDER_CONSUME,PAYMENT_CHANNEL_IDS, EQUITY_TYPE,COUPON_ID,LUCKY_TURNING_ID, ACTIVITY_STATUS,CREATE_TIME,UPDATE_TIME ) values(#{id,jdbcType=BIGINT},#{activityName,jdbcType=VARCHAR},#{beginTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP},#{activityStoresSelectType,jdbcType=INTEGER},#{activityStoresIds,jdbcType=VARCHAR}, #{memberLevelSelectType,jdbcType=INTEGER},#{memberLevelIds,jdbcType=VARCHAR}, #{activityOrderConsume,jdbcType=DECIMAL},#{paymentChannelIds,jdbcType=VARCHAR}, #{equityType,jdbcType=INTEGER},#{couponId,jdbcType=BIGINT},#{luckyTurningId,jdbcType=BIGINT}, #{activityStatus,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP} ) </insert> <insertid="insertSelective"parameterType="com.home.orderpresentdemo.entity.OrderPresentInfo"> insertintodss_wsh_order_present_info <trimprefix="("suffix=")"suffixOverrides=","> <iftest="id!=null"> ID, </if> <iftest="activityName!=null"> ACTIVITY_NAME, </if> <iftest="beginTime!=null"> BEGIN_TIME, </if> <iftest="endTime!=null"> END_TIME, </if> <iftest="activityStoresSelectType!=null"> ACTIVITY_STORES_SELECT_TYPE, </if> <iftest="activityStoresIds!=null"> ACTIVITY_STORES_IDS, </if> <iftest="memberLevelSelectType!=null"> MEMBER_LEVEL_SELECT_TYPE, </if> <iftest="memberLevelIds!=null"> MEMBER_LEVEL_IDS, </if> <iftest="activityOrderConsume!=null"> ACTIVITY_ORDER_CONSUME, </if> <iftest="paymentChannelIds!=null"> PAYMENT_CHANNEL_IDS, </if> <iftest="equityType!=null"> EQUITY_TYPE, </if> <iftest="couponId!=null"> COUPON_ID, </if> <iftest="luckyTurningId!=null"> LUCKY_TURNING_ID, </if> <iftest="activityStatus!=null"> ACTIVITY_STATUS, </if> <iftest="createTime!=null"> CREATE_TIME, </if> <iftest="updateTime!=null"> UPDATE_TIME, </if> </trim> <trimprefix="values("suffix=")"suffixOverrides=","> <iftest="id!=null"> #{id,jdbcType=BIGINT}, </if> <iftest="activityName!=null"> #{activityName,jdbcType=VARCHAR}, </if> <iftest="beginTime!=null"> #{beginTime,jdbcType=TIMESTAMP}, </if> <iftest="endTime!=null"> #{endTime,jdbcType=TIMESTAMP}, </if> <iftest="activityStoresSelectType!=null"> #{activityStoresSelectType,jdbcType=INTEGER}, </if> <iftest="activityStoresIds!=null"> #{activityStoresIds,jdbcType=VARCHAR}, </if> <iftest="memberLevelSelectType!=null"> #{memberLevelSelectType,jdbcType=INTEGER}, </if> <iftest="memberLevelIds!=null"> #{memberLevelIds,jdbcType=VARCHAR}, </if> <iftest="activityOrderConsume!=null"> #{activityOrderConsume,jdbcType=DECIMAL}, </if> <iftest="paymentChannelIds!=null"> #{paymentChannelIds,jdbcType=VARCHAR}, </if> <iftest="equityType!=null"> #{equityType,jdbcType=INTEGER}, </if> <iftest="couponId!=null"> #{couponId,jdbcType=BIGINT}, </if> <iftest="luckyTurningId!=null"> #{luckyTurningId,jdbcType=BIGINT}, </if> <iftest="activityStatus!=null"> #{activityStatus,jdbcType=INTEGER}, </if> <iftest="createTime!=null"> #{createTime,jdbcType=TIMESTAMP}, </if> <iftest="updateTime!=null"> #{updateTime,jdbcType=TIMESTAMP}, </if> </trim> </insert> <updateid="updateByPrimaryKeySelective"parameterType="com.home.orderpresentdemo.entity.OrderPresentInfo"> updatedss_wsh_order_present_info <set> <iftest="activityName!=null"> ACTIVITY_NAME=#{activityName,jdbcType=VARCHAR}, </if> <iftest="beginTime!=null"> BEGIN_TIME=#{beginTime,jdbcType=TIMESTAMP}, </if> <iftest="endTime!=null"> END_TIME=#{endTime,jdbcType=TIMESTAMP}, </if> <iftest="activityStoresSelectType!=null"> ACTIVITY_STORES_SELECT_TYPE=#{activityStoresSelectType,jdbcType=INTEGER}, </if> <iftest="activityStoresIds!=null"> ACTIVITY_STORES_IDS=#{activityStoresIds,jdbcType=VARCHAR}, </if> <iftest="memberLevelSelectType!=null"> MEMBER_LEVEL_SELECT_TYPE=#{memberLevelSelectType,jdbcType=INTEGER}, </if> <iftest="memberLevelIds!=null"> MEMBER_LEVEL_IDS=#{memberLevelIds,jdbcType=VARCHAR}, </if> <iftest="activityOrderConsume!=null"> ACTIVITY_ORDER_CONSUME=#{activityOrderConsume,jdbcType=DECIMAL}, </if> <iftest="paymentChannelIds!=null"> PAYMENT_CHANNEL_IDS=#{paymentChannelIds,jdbcType=VARCHAR}, </if> <iftest="equityType!=null"> EQUITY_TYPE=#{equityType,jdbcType=INTEGER}, </if> <iftest="couponId!=null"> COUPON_ID=#{couponId,jdbcType=BIGINT}, </if> <iftest="luckyTurningId!=null"> LUCKY_TURNING_ID=#{luckyTurningId,jdbcType=BIGINT}, </if> <iftest="activityStatus!=null"> ACTIVITY_STATUS=#{activityStatus,jdbcType=INTEGER}, </if> <iftest="createTime!=null"> CREATE_TIME=#{createTime,jdbcType=TIMESTAMP}, </if> <iftest="updateTime!=null"> UPDATE_TIME=#{updateTime,jdbcType=TIMESTAMP}, </if> </set> whereID=#{id,jdbcType=BIGINT} </update> <updateid="updateByPrimaryKey"parameterType="com.home.orderpresentdemo.entity.OrderPresentInfo"> updatedss_wsh_order_present_info setACTIVITY_NAME=#{activityName,jdbcType=VARCHAR}, BEGIN_TIME=#{beginTime,jdbcType=TIMESTAMP}, END_TIME=#{endTime,jdbcType=TIMESTAMP}, ACTIVITY_STORES_SELECT_TYPE=#{activityStoresSelectType,jdbcType=INTEGER}, ACTIVITY_STORES_IDS=#{activityStoresIds,jdbcType=VARCHAR}, MEMBER_LEVEL_SELECT_TYPE=#{memberLevelSelectType,jdbcType=INTEGER}, MEMBER_LEVEL_IDS=#{memberLevelIds,jdbcType=VARCHAR}, ACTIVITY_ORDER_CONSUME=#{activityOrderConsume,jdbcType=DECIMAL}, PAYMENT_CHANNEL_IDS=#{paymentChannelIds,jdbcType=VARCHAR}, EQUITY_TYPE=#{equityType,jdbcType=INTEGER}, COUPON_ID=#{couponId,jdbcType=BIGINT}, LUCKY_TURNING_ID=#{luckyTurningId,jdbcType=BIGINT}, ACTIVITY_STATUS=#{activityStatus,jdbcType=INTEGER}, CREATE_TIME=#{createTime,jdbcType=TIMESTAMP}, UPDATE_TIME=#{updateTime,jdbcType=TIMESTAMP} whereID=#{id,jdbcType=BIGINT} </update> </mapper> SqlMapperConfig.xml: <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!--对在此配置文件下的所有cache进行全局性开/关设置true|falsetrue--> <settingname="cacheEnabled"value="true"/> <!--全局性设置懒加载。如果设为‘关,则所有相关联的都会被初始化加载。--> <settingname="lazyLoadingEnabled"value="true"/> <!--当设置为‘开’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。--> <settingname="aggressiveLazyLoading"value="true"/> <!--允许和不允许单条语句返回多个数据集(取决于驱动需求)--> <settingname="multipleResultSetsEnabled"value="true"/> <!--使用列标签代替列名称。不用的驱动器有不同的作法。--> <settingname="localCacheScope"value="STATEMENT"/> <!--允许JDBC生成主键。需要驱动器支持.如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。--> <settingname="useGeneratedKeys"value="true"/> <!--指定MyBatis是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,NONE没有嵌套的结果。FULL将自动映射所有复杂的结果。--> <settingname="autoMappingBehavior"value="PARTIAL"/> <!--配置和设定执行器,SIMPLE执行器执行其它语句。REUSE执行器可能重复使用preparedstatements语句,BATCH执行器可以重复执行语句和批量更新。--> <settingname="defaultExecutorType"value="SIMPLE"/> <!--设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时.正整数--> <settingname="defaultStatementTimeout"value="5000"/> <settingname="jdbcTypeForNull"value="OTHER"/> <settingname="logImpl"value="LOG4J"/> </settings> </configuration> index.html(这里测试写的比较随意,可以忽略): <!DOCTYPEhtml> <htmllang="en"xmlns:th="http://www.w3.org/1999/xhtml"> <head> <metacharset="UTF-8"> <title>第一个HTML页面</title> </head> <body> <h1>HelloSpringBoot!!!</h1> <ath:href="@{/goToAdd}">添加</a> <pth:text="${hello}"></p> <div> <pth:text="${say}"></p> </div> </body> </html> application.properties: #server.port=80 logging.level.org.springframework=DEBUG #springbootmybatis #jiazaimybatispeizhiwenjian mybatis.mapper-locations=classpath:mapper/*Mapper.xml #mybatis.config-location=classpath:mybatis/sqlMapConfig.xml #mybatis.type-aliases-package=com.demo.bean #shujuyuan spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dss_wshop?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=root spring.thymeleaf.prefix=classpath:/templates/ #禁止thymeleaf缓存(建议:开发环境设置为false,生成环境设置为true) spring.thymeleaf.cache=false #pagehelper分页插件配置以下属性不加也可以实现分页功能 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql 获得结果如下所示:

本文内容总结:SpringBoot与PageHelper的整合示例详解,

原文链接:https://www.cnblogs.com/charlypage/p/11220755.html