zoukankan      html  css  js  c++  java
  • 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;
    }
    }

    分页实现总结:


     
  • 相关阅读:
    vue打包---放到服务器下(一个服务器多个项目需要配置路径),以及哈希模式和历史模式的不同配置方法
    承诺----异步函数---封装一个函数,使用承诺得到返回值(原本三个参数,使用前两个参数发送请求,得到第三个参数想要的结果,但是在函数外部拿不到第三个参数的值,所以改为两个参数,用承诺来获取第三个参数)
    双层拖拽事件,用鼠标画矩形,拖动右下角可以再次改变矩形大小,方案一 有BUG
    axios 使用方法 以及服务器端 设置拦截发送404状态的提示语,当网络错误时候返回前端的提示, 当网络正常的时候返回后端的提示
    异步async await 相关知识点总结以及代码练习
    vue+div.canvas图像标注功能实现
    Django与Ajax
    项目园
    Django 路由层与视图层
    Bootstrap框架如何设置导入链接
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10969348.html
Copyright © 2011-2022 走看看