springboot+mybatis集成分頁功能


1.使用idea搭建srpingboot項目

在pom.xml文件中引入如下的依賴:

                <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- swagger文檔相關依賴-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.1.2</version>
		</dependency>
		<!-- swagger文檔相關依賴上下2個依賴的版本號必須一致-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- mybatis相關依賴-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.2.2</version>
		</dependency>
		<!-- 使用阿里的druid數據庫連接池-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.10</version>
		</dependency>
		<!-- jdbc相關插件-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
			<version>1.5.19.RELEASE</version>
		</dependency>
		<!-- mysql相關插件-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
		</dependency>

		<!-- 分頁插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.3</version>
		</dependency>
		<!-- 用來將對象轉成json和將json轉為對象 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.12</version>
		</dependency>

 spring項目配置文件:application.yml,如果是application.properties,那么建議改成yml格式,配置如下:

server:
  port: 2300
spring:
  application:
    name: run
  datasource:
    druid:
      url: jdbc:mysql://192.168.50.117:23306/shop?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
      username: shop
      password: shop
      filter:
        stat:
          db-type: mysql
          log-slow-sql: true
          slow-sql-millis: 3000
          enabled: true
        wall:
          config:
            multi-statement-allow: true
          enabled: true
      filters: stat,wall #防御SQL注入的filter:wall
      initial-size: 1 #初始化連接數量
      max-active: 10 #最大並發連接數
      min-idle: 1 #最小空閑連接數
      max-wait: 60000 #配置獲取連接等待超時的時間
      time-between-eviction-runs-millis: 60000 #間隔多久才進行一次檢測
      min-evictable-idle-time-millis: 300000 #一個連接在池中最小生存的時間
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      validation-query: SELECT 'lll'
      # 打開PSCache,並且指定每個連接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 內置監控頁面的首頁是localhost:2300/druid/index.html 可以登錄sql監控頁
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: flex
        login-password: flex
        reset-enable: false

 //包結構如下創建:

//其中domain,mapper接口和mapper.xml可以通過mybatis生產工具生成.一般可以在百度下載一個生產工具,然后生成對應的類后就拷貝到項目來:

此處可以參考別人提供的方法:https://www.cnblogs.com/smileberry/p/4145872.html

如下是我下載的一個項目:

 

 

接着在主配置類上配上mapper的包掃描路徑:

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

 

 //創建service和實現類(具體分頁邏輯后面分析)

public interface IOrderMastService {

    ShopOrderMast getOrderMastByOrderId(String orderId);

    PageInfo<ShopOrderMast> selectOrderList(OrderQueryObject   queryObject);

}

@Service
public class OrderMastServiceImpl implements IOrderMastService{
    private final static Logger logger =  LoggerFactory.getLogger(OrderMastServiceImpl.class);
    @Autowired
    private ShopOrderMastMapper orderMastMapper;
    @Override
    public ShopOrderMast getOrderMastByOrderId(String orderId) {
        return orderMastMapper.findOrderByOrderId(orderId);
    }

    @Override
    public PageInfo<ShopOrderMast> selectOrderList(OrderQueryObject queryObject) {
        logger.info("請求參數:{}", JSON.toJSONString(queryObject));
        PageHelper.startPage(queryObject.getCurrentNum(),queryObject.getPageSize());
        List<ShopOrderMast> list= orderMastMapper.selectOrderList(queryObject);
        logger.info("返回值:{}", JSON.toJSONString(list));
        return new PageInfo<>(list);
    }
}

//mapper接口
@Repository
public interface ShopOrderMastMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
int deleteByPrimaryKey(Long codId);

/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
int insert(ShopOrderMast record);

/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
int insertSelective(ShopOrderMast record);

/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
ShopOrderMast selectByPrimaryKey(Long codId);

/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
int updateByPrimaryKeySelective(ShopOrderMast record);

/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table shop_order_mast
*
* @mbggenerated
*/
int updateByPrimaryKey(ShopOrderMast record);

ShopOrderMast findOrderByOrderId(String orderId);

List<ShopOrderMast> selectOrderList(OrderQueryObject queryObject);
}
//controller

@Controller
@Api(value ="訂單",description ="訂單相關接口" ) //API注解是用來對類進行描述
public class ShopOrderController {

private final static Logger logger = LoggerFactory.getLogger(ShopOrderController.class);
@Autowired
private IOrderMastService orderMastService;

@RequestMapping(value = "shop/order/{orderId}",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value ="訂單查詢",notes ="通過訂單號查詢對應的訂單",httpMethod ="POST")//對該方法進行說明
public ShopOrderMast findOrderMastByOrderId(@PathVariable("orderId") String orderId){
return orderMastService.getOrderMastByOrderId(orderId);
}

@RequestMapping(value = "shop/order/list",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value ="訂單列表",notes ="訂單列表分頁查詢",httpMethod ="POST")//對該方法進行說明
public PageInfo<ShopOrderMast> findOrderMastByOrderId(@RequestBody OrderQueryObject queryObject){
return orderMastService.selectOrderList(queryObject);
}
}

mapper.xml(提供部分信息)
<select id="findOrderByOrderId" resultMap="BaseResultMap">
select * from shop_order_mast WHERE cod_order_id=#{orderId};
</select>
<select id="selectOrderList" resultMap="BaseResultMap">
select * from shop_order_mast WHERE flg_status_order=#{orderStatu} ORDER by dat_order_submit DESC
</select>

//分頁請求參數對象
public class QueryObject {
@ApiModelProperty("當前頁")
private int currentNum=1;
@ApiModelProperty("總頁數")
private int pageSize=10;

public int getCurrentNum() {
return currentNum;
}

public void setCurrentNum(int currentNum) {
this.currentNum = currentNum;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}

public class OrderQueryObject extends QueryObject {
@ApiModelProperty("訂單狀態")
private int orderStatu;

public int getOrderStatu() {
return orderStatu;
}

public void setOrderStatu(int orderStatu) {
this.orderStatu = orderStatu;
}
}

分頁實現總結:

 



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM