系列导航

springBoot项目打jar包

1、springboot工程新建(单模块)

2、springboot创建多模块工程

3、springboot连接数据库

4、SpringBoot连接数据库引入druid

5、SpringBoot连接数据库引入mybatis

6、SpringBoot-mybatis分页实现pagehelper

7、SpringBoot-mybatis-plus引入

8、SpringBoot 事务

9、SpringBoot-mybatis-druid多源数据多源数据

10、SpringBoot-mybatis-plus-druid多源数据

11、SpringBoot-mybatis-plus-druid多源数据事务

12、SpringBoot-mybatis-plus-ehcache

13、SpringBoot-配置文件里密码加密

14、SpringBoot-easyexcel导出excle

完结

SpringBoot连接数据库引入mybatis的分页插件

注:mybatisplus跟mybatis的分页插件一样

1、 数据准备(oracle数据库)

  1. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1001', 'RabbitMQ');
  2. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1002', 'ZeroMQ');
  3. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1003', 'ActiveMQ');
  4. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1004', 'RocketMQ');
  5. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1005', 'Apollo');
  6. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('1', '后端开发');
  7. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('2', '前端开发');
  8. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('3', '前端框架');
  9. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('4', '后端框架');
  10. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('5', '数据库');
  11. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('6', 'NoSql');
  12. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('7', '对象存储');
  13. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('8', '大数据');
  14. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('9', '操作系统');
  15. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('10', '消息队列');
  16. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('100', 'Python');
  17. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('101', 'Java');
  18. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('102', 'PHP');
  19. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('103', 'C');
  20. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('104', 'C++');
  21. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('105', 'C#');
  22. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('106', 'PHP');
  23. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('107', 'go');
  24. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('108', 'Visual Basic');
  25. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('201', 'JavaScript');
  26. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('202', 'css');
  27. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('203', 'swift');
  28. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('204', 'html5');
  29. Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME) Values ('300', 'Vue');
  30. commit;

2、 在上一个项目的基础上pom.xml增加mybatis分页的依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.example</groupId>
  6. <artifactId>demo</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>demo</name>
  9. <description>Demo project for Spring Boot</description>
  10.  
  11. <properties>
  12. <java.version>1.8</java.version>
  13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  15. <spring-boot.version>2.1.17.RELEASE</spring-boot.version>
  16. </properties>
  17.  
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-jdbc</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-web</artifactId>
  26. </dependency>
  27.  
  28. <dependency>
  29. <groupId>com.oracle</groupId>
  30. <artifactId>ojdbc6</artifactId>
  31. <version>11.2.0.3</version>
  32. </dependency>
  33.  
  34. <!-- 集成druid -->
  35. <dependency>
  36. <groupId>com.alibaba</groupId>
  37. <artifactId>druid-spring-boot-starter</artifactId>
  38. <version>1.1.10</version>
  39. </dependency>
  40.  
  41. <!-- 集成mybatis -->
  42. <dependency>
  43. <groupId>org.mybatis.spring.boot</groupId>
  44. <artifactId>mybatis-spring-boot-starter</artifactId>
  45. <version>1.3.2</version>
  46. </dependency>
  47. <!-- 集成mybatis-pagehelper分页功能 -->
  48. <dependency>
  49. <groupId>com.github.pagehelper</groupId>
  50. <artifactId>pagehelper-spring-boot-starter</artifactId>
  51. <version>1.2.12</version>
  52. </dependency>
  53.  
  54. <dependency>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-starter-test</artifactId>
  57. <scope>test</scope>
  58. <exclusions>
  59. <exclusion>
  60. <groupId>org.junit.vintage</groupId>
  61. <artifactId>junit-vintage-engine</artifactId>
  62. </exclusion>
  63. </exclusions>
  64. </dependency>
  65. </dependencies>
  66.  
  67. <dependencyManagement>
  68. <dependencies>
  69. <dependency>
  70. <groupId>org.springframework.boot</groupId>
  71. <artifactId>spring-boot-dependencies</artifactId>
  72. <version>${spring-boot.version}</version>
  73. <type>pom</type>
  74. <scope>import</scope>
  75. </dependency>
  76. </dependencies>
  77. </dependencyManagement>
  78.  
  79. <build>
  80. <plugins>
  81. <plugin>
  82. <groupId>org.apache.maven.plugins</groupId>
  83. <artifactId>maven-compiler-plugin</artifactId>
  84. <version>3.8.1</version>
  85. <configuration>
  86. <source>1.8</source>
  87. <target>1.8</target>
  88. <encoding>UTF-8</encoding>
  89. </configuration>
  90. </plugin>
  91. <plugin>
  92. <groupId>org.springframework.boot</groupId>
  93. <artifactId>spring-boot-maven-plugin</artifactId>
  94. <version>2.1.17.RELEASE</version>
  95. <configuration>
  96. <mainClass>com.example.demo.DemoApplication</mainClass>
  97. </configuration>
  98. <executions>
  99. <execution>
  100. <id>repackage</id>
  101. <goals>
  102. <goal>repackage</goal>
  103. </goals>
  104. </execution>
  105. </executions>
  106. </plugin>
  107. </plugins>
  108. </build>
  109.  
  110. </project>

3、application.properties配置

增加pagehelper的配置(如下红色部分)

  1. spring.application.name=demo
  2. # 应用服务 WEB 访问端口
  3. server.port=8080
  4.  
  5. # 数据库设置
  6. spring.datasource.driverClassName=oracle.jdbc.OracleDriver
  7. spring.datasource.url=jdbc:oracle:thin:@192.168.0.100:1521:orcl
  8. spring.datasource.username=zy
  9. spring.datasource.password=1
  10.  
  11. # druid配置
  12. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  13.  
  14. # druid参数调优(可选)
  15. # 初始化大小,最小,最大
  16. spring.datasource.initialSize=5
  17. spring.datasource.minIdle=5
  18. spring.datasource.maxActive=20
  19. # 配置获取连接等待超时的时间
  20. spring.datasource.maxWait=60000
  21. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  22. spring.datasource.timeBetweenEvictionRunsMillis=60000
  23. # 配置一个连接在池中最小生存的时间,单位是毫秒
  24. spring.datasource.minEvictableIdleTimeMillis=300000
  25. # 测试连接
  26. spring.datasource.testWhileIdle=true
  27. spring.datasource.testOnBorrow=false
  28. spring.datasource.testOnReturn=false
  29. # 打开PSCache,并且指定每个连接上PSCache的大小
  30. spring.datasource.poolPreparedStatements=true
  31. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
  32. # 配置监控统计拦截的filters
  33. spring.datasource.filters=stat
  34. # asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间
  35. spring.datasource.asyncInit=true
  36.  
  37. ## mybatis配置
  38. # 参数类型的包别名设置
  39. mybatis.typeAliasesPackage=com.example.demo.domain
  40. # 指向映射xml文件目录
  41. mybatis.mapperLocations=classpath:mapper/*.xml
  42.  
  43. #分頁配置pagehelper
  44. pagehelper.helperDialect=oracle
  45. pagehelper.reasonable=true
  46. pagehelper.supportMethodsArguments=true
  47. pagehelper.params=count=countSql

4、工程目录

 5、代码部分

druid配置类

  1. package com.example.demo.config;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import javax.sql.DataSource;
  6.  
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.context.annotation.Primary;
  13.  
  14. import com.alibaba.druid.pool.DruidDataSource;
  15.  
  16. @Configuration
  17. public class DruidConfig {
  18. private Logger logger = LoggerFactory.getLogger(DruidConfig.class);
  19.  
  20. @Value("${spring.datasource.url}")
  21. private String dbUrl;
  22.  
  23. @Value("${spring.datasource.username}")
  24. private String username;
  25.  
  26. @Value("${spring.datasource.password}")
  27. private String password;
  28.  
  29. @Value("${spring.datasource.driver-class-name}")
  30. private String driverClassName;
  31.  
  32. @Value("${spring.datasource.initial-size}")
  33. private int initialSize;
  34.  
  35. @Value("${spring.datasource.min-idle}")
  36. private int minIdle;
  37.  
  38. @Value("${spring.datasource.max-active}")
  39. private int maxActive;
  40.  
  41. @Value("${spring.datasource.max-wait}")
  42. private int maxWait;
  43.  
  44. @Value("${spring.datasource.time-between-eviction-runs-millis}")
  45. private int timeBetweenEvictionRunsMillis;
  46.  
  47. @Value("${spring.datasource.min-evictable-idle-time-millis}")
  48. private int minEvictableIdleTimeMillis;
  49.  
  50. // @Value("${spring.datasource.validation-query}")
  51. // private String validationQuery;
  52.  
  53. @Value("${spring.datasource.test-while-idle}")
  54. private boolean testWhileIdle;
  55.  
  56. @Value("${spring.datasource.test-on-borrow}")
  57. private boolean testOnBorrow;
  58.  
  59. @Value("${spring.datasource.test-on-return}")
  60. private boolean testOnReturn;
  61.  
  62. @Value("${spring.datasource.pool-prepared-statements}")
  63. private boolean poolPreparedStatements;
  64.  
  65. @Value("${spring.datasource.max-pool-prepared-statement-per-connection-size}")
  66. private int maxPoolPreparedStatementPerConnectionSize;
  67.  
  68. @Value("${spring.datasource.filters}")
  69. private String filters;
  70.  
  71. @Bean //声明其为Bean实例
  72. @Primary //在同样的DataSource中,首先使用被标注的DataSource
  73. public DataSource dataSource(){
  74. DruidDataSource datasource = new DruidDataSource();
  75.  
  76. datasource.setUrl(this.dbUrl);
  77. datasource.setUsername(username);
  78. datasource.setPassword(password);
  79. datasource.setDriverClassName(driverClassName);
  80.  
  81. //configuration
  82. datasource.setInitialSize(initialSize);
  83. datasource.setMinIdle(minIdle);
  84. datasource.setMaxActive(maxActive);
  85. datasource.setMaxWait(maxWait);
  86. datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  87. datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  88. // datasource.setValidationQuery(validationQuery);
  89. datasource.setTestWhileIdle(testWhileIdle);
  90. datasource.setTestOnBorrow(testOnBorrow);
  91. datasource.setTestOnReturn(testOnReturn);
  92. datasource.setPoolPreparedStatements(poolPreparedStatements);
  93. datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
  94. try {
  95. datasource.setFilters(filters);
  96. } catch (SQLException e) {
  97. logger.error("druid configuration initialization filter", e);
  98. }
  99. // datasource.setConnectionProperties(connectionProperties);
  100.  
  101. return datasource;
  102. }
  103. }
  1. package com.example.demo.domain;
  2.  
  3. public class Block {
  4.  
  5. private String blockId;
  6.  
  7. private String blockName;
  8.  
  9. public String getBlockId() {
  10. return blockId;
  11. }
  12.  
  13. public void setBlockId(String blockId) {
  14. this.blockId = blockId;
  15. }
  16.  
  17. public String getBlockName() {
  18. return blockName;
  19. }
  20.  
  21. public void setBlockName(String blockName) {
  22. this.blockName = blockName;
  23. }
  24.  
  25. @Override
  26. public String toString() {
  27. return "XyDicBlockT{" +
  28. "blockId='" + blockId + '\'' +
  29. ", blockName='" + blockName + '\'' +
  30. '}';
  31. }
  32. }
  1. package com.example.demo.mapper;
  2.  
  3. import com.example.demo.domain.Block;
  4. import org.apache.ibatis.annotations.Mapper;
  5.  
  6. import java.util.List;
  7.  
  8. public interface BlockMapper {
  9. // 对应xml映射文件元素的ID
  10. Block selectByPrimaryKey(String blockId);
  11.  
  12. // 列出知识块,对应xml映射文件元素的ID
  13. List<Block> selectBlock();
  14. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.BlockMapper">
  4. <resultMap id="BaseResultMap" type="com.example.demo.domain.Block">
  5. <result property="blockId" column="block_Id"/>
  6. <result property="blockName" column="block_Name"/>
  7. </resultMap>
  8.  
  9. <sql id="Base_Column_List">
  10. block_id,block_name
  11. </sql>
  12. <select id="selectByPrimaryKey" parameterType="String" resultMap="BaseResultMap">
  13. select
  14. <include refid="Base_Column_List" />
  15. from XY_DIC_BLOCK_T
  16. where block_Id = #{blockId,jdbcType=VARCHAR}
  17. </select>
  18.  
  19. <select id="selectBlock" resultMap="BaseResultMap">
  20. select
  21. <include refid="Base_Column_List" />
  22. from XY_DIC_BLOCK_T
  23. </select>
  24. </mapper>
  1. package com.example.demo.service;
  2.  
  3. import com.example.demo.domain.Block;
  4.  
  5. import java.util.List;
  6.  
  7. public interface BlockService {
  8.  
  9. Block getUserById(String userId);
  10.  
  11. List<Block> listBlock(int page, int pageSize);
  12.  
  13. }
  1. package com.example.demo.service.impl;
  2.  
  3. import javax.annotation.Resource;
  4.  
  5. import com.example.demo.domain.Block;
  6. import com.example.demo.mapper.BlockMapper;
  7. import com.example.demo.service.BlockService;
  8. import com.github.pagehelper.PageHelper;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11.  
  12. import java.util.List;
  13.  
  14. @Service
  15. public class BlockServiceImpl implements BlockService {
  16.  
  17. // 注入mapper类
  18. @Autowired
  19. private BlockMapper blockMapper;
  20.  
  21. @Override
  22. public Block getUserById(String blockId) {
  23. return blockMapper.selectByPrimaryKey(blockId);
  24. }
  25.  
  26. @Override
  27. public List<Block> listBlock(int page, int pageSize) {
  28. List<Block> result = null;
  29. try {
  30. // 调用pagehelper分页,采用starPage方式。starPage应放在Mapper查询函数之前
  31. PageHelper.startPage(page, pageSize); //每页的大小为pageSize,查询第page页的结果
  32. PageHelper.orderBy("block_id ASC "); //进行分页结果的排序
  33. result = blockMapper.selectBlock();
  34. } catch (Exception e) {
  35. e.printStackTrace();
  36. }
  37.  
  38. return result;
  39. }
  40. }
  1. package com.example.demo;
  2.  
  3. import org.mybatis.spring.annotation.MapperScan;
  4. import org.springframework.boot.SpringApplication;
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;
  6. import org.springframework.context.annotation.ComponentScan;
  7. import org.springframework.stereotype.Component;
  8.  
  9. @SpringBootApplication
  10. //指定要扫描的mybatis映射类的路径
  11. @MapperScan("com.example.demo.mapper")
  12. public class DemoApplication {
  13.  
  14. public static void main(String[] args) {
  15. SpringApplication.run(DemoApplication.class, args);
  16. }
  17.  
  18. }
  1. package com.example.demo.controller;
  2.  
  3. import com.example.demo.domain.Block;
  4. import com.example.demo.service.BlockService;
  5.  
  6. import com.github.pagehelper.PageInfo;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.*;
  9.  
  10. import java.util.List;
  11.  
  12. @RestController
  13. @RequestMapping("/hello")
  14. public class HelloController {
  15.  
  16. @Autowired
  17. private BlockService blockService;
  18.  
  19. @GetMapping("/list")
  20. @ResponseBody
  21. public PageInfo<Block> index(
  22. @RequestParam(value="page", required=false, defaultValue="1") int page,
  23. @RequestParam(value="page-size", required=false, defaultValue="5") int pageSize) {
  24.  
  25. List<Block> result = blockService.listBlock(page, pageSize);
  26. // PageInfo包装结果,返回更多分页相关信息
  27. PageInfo<Block> pi = new PageInfo<Block>(result);
  28.  
  29. return pi;
  30. }
  31.  
  32. }
  • 注:@RequestParam 注解获取url中的?page=1&page-size=5参数,value="page"是url中的参数名,required指参数是否必须,如果是必须URL却没有这个参数会报错,defaultValue="1"缺省值
  • PageInfo PageInfo包装结果,返回更多分页相关信息

7、启动项目访问项目

  1. {
  2. "total": 54,
  3. "list": [
  4. {
  5. "blockId": "1",
  6. "blockName": "后端开发"
  7. },
  8. {
  9. "blockId": "100",
  10. "blockName": "Python"
  11. },
  12. {
  13. "blockId": "1000",
  14. "blockName": "Kafka"
  15. }
  16. ],
  17. "pageNum": 1,
  18. "pageSize": 3,
  19. "size": 3,
  20. "startRow": 1,
  21. "endRow": 3,
  22. "pages": 18,
  23. "prePage": 0,
  24. "nextPage": 2,
  25. "isFirstPage": true,
  26. "isLastPage": false,
  27. "hasPreviousPage": false,
  28. "hasNextPage": true,
  29. "navigatePages": 8,
  30. "navigatepageNums": [
  31. 1,
  32. 2,
  33. 3,
  34. 4,
  35. 5,
  36. 6,
  37. 7,
  38. 8
  39. ],
  40. "navigateFirstPage": 1,
  41. "navigateLastPage": 8
  42. }

8、使用druid的监控功能

6、SpringBoot-mybatis分页实现pagehelper的更多相关文章

  1. SpringBoot Mybatis 分页插件PageHelper

    添加maven配置: <!-- 分布插件 --> <dependency> <groupId>com.github.pagehelper</groupId&g ...

  2. springboot +mybatis分页插件PageHelper

    1.问题描述 JAVA界ORM的两位大佬Hibernate和Mybatis,hb自带分页(上手挺快,以前用了好几年hb,后期运维及优化快疯了),mybatis没有分页功能,需要借助第三方插件来完成,比 ...

  3. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  4. Mybatis分页插件PageHelper使用

    一. Mybatis分页插件PageHelper使用  1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...

  5. Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper

    引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...

  6. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  7. Mybatis分页插件PageHelper的实现

    Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...

  8. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  9. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  10. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

随机推荐

  1. 一文带你掌握C语言的循环结构

    C语言循环结构详解 在C语言中,循环结构是一种重要的控制结构,它允许我们重复执行一段代码,以达到特定的目的.循环结构可以帮助我们简化重复性的任务,提高代码的效率.本篇文章将深入探讨C语言中的循环结构, ...

  2. SpringBoot实战项目:蚂蚁爱购(从零开发)

    ​ 简介 这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购. 从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目. 教程路线是:搭建环境=> 安装软件=> 创建项 ...

  3. MySQL运维3-分库分表策略

    一.介绍 单库瓶颈:如果在项目中使用的都是单MySQL服务器,则会随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行存储,存在一下性能瓶颈: IO瓶颈:热点数据太多,数 ...

  4. JUC_start和run

    类型: run方法是同步 而start是异步 作用: run方法的作用是存放任务代码   ,start的方法是启动线程 线程数量方面: 执行run方法,他不会产生新线程,而执行start方法hi产生新 ...

  5. Mock框架moco学习笔记

    目录 一.Moco框架基本介绍 1. 什么是Moco 2. Moco原理简介 3. Moco的配置和运行 4. Moco启动以及第一个demo 二.mock 的启动及第一个demo 1. 创建star ...

  6. FolkMQ 内存型消息中间件,v1.0.21 发布

    简介 采用 "多路复用" + "内存运行" + "快照持久化" + "Broker 集群模式"(可选)+ 基于 Sock ...

  7. winform中也可以这样做数据展示✨

    1.前言 在做winform开发的过程中,经常需要做数据展示的功能,之前一直使用的是gridcontrol控件,今天想通过一个示例,跟大家介绍一下如何在winform blazor hybrid中使用 ...

  8. ElasticSearch之cat segments API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/segments?v=true&pretty" --cacert $ES_ ...

  9. 动态规划问题(六)最长公共子序列(LCS)

    问题描述 ​ 给你两个字符串,要求得到这两个字符串的最长公共子序列长度. ​ 比如:对于输入的字符串 S1 "AGGTAB" 和 S2 "GXTXAYB",它们 ...

  10. java进行数据库操作的并发控制的2种方法

    本文分享自华为云社区<java进行数据库操作的并发控制>,作者:张俭. 在现代应用编码中,从数据库里面find出来,进行一些业务逻辑操作,最后再save回去.即: Person perso ...