SpringBoot与PageHelper的整合示例详解
本文内容纲要:
-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