• 分页&日志


    分页

    分页功能存在在我们网页的方方面面,例如b站的这个评论
    在这里插入图片描述
    这个就是一个很典型的分类,如果你细心一点还会发现每一页的评论数都是10条。

    那么想这样的分页要如何实现呢

    很简单,写一个分页查询的sql查询语句就可以了

    这个就是分页查询的sql语句了

    select * from tb_user limit #{begin} , #{size}
    
    • 1

    begin代表的是从哪里开始查,默认的初始下标为0,所以begin的值应为我们要开始查询的记录的位序加一,size者代表要查询出几条结果

    下面我们到IDEA中实践一下

    先建立一个user的表,多创建一点数据,方便查看分页效果

    -- 删除user表
    drop table if exists user;
    -- 创建user表
    create table user
    (
        -- id 主键
        id           int primary key auto_increment,
        
        user_name   varchar(20),
        
        password    varchar(20),
    		
        age      int
    );
    -- 添加数据
    insert into user (user_name , password , age)
    values 
           ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2),
    			 ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2),
    			 ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2),
    			 ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2),
    			 ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2),
    			 ('小明', '123456', 100),
    			 ('小红', '123456', 50),
    			 ('李华', '123456', 500),
    			 ('张三', '123456', 110),
    			 ('田所浩二', '114514', 1919810),
    			 ('只因', '12138', 2)
            ;
       
    SELECT * FROM user;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    之后我们导入一下要导入的maven依赖和XML配置文件

     
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatisartifactId>
          <version>3.5.5version>
        dependency>
    
        
        <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <version>8.0.25version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
        <typeAliases>
            <package name="com.pojo"/>
        </typeAliases>
    
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!--导入驱动-->
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <!--配置连接-->
                    <property name="url" value="jdbc:mysql:///mybatis?useSLL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--加载sql的映射文件-->
            <package name="com.mapper"/>
        </mappers>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    再写一下映射文件

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mapper.UserMapper">
        <resultMap id="userMapper" type="com.pojo.User">
            <result column="user_name" property="userName">result>
        resultMap>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在导入一个数据库连接的工具类

    public class SqlSessionFactoryUtils {
    
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            //静态代码块会随着类的加载而自动执行,且只执行一次
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
        public static SqlSessionFactory getSqlSessionFactory(){
            return sqlSessionFactory;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    下面是查询语句,我比较懒啊,这里就直接用一个注解开发,主要也是这个sql语句比较的简单

        @Select("select * from user limit #{page},#{size}")
        @ResultMap("UserMapper")
        List<User> selectByPage(@Param("page")int page,@Param("size")int size);
    
    • 1
    • 2
    • 3

    日志

    可以将系统执行的信息选择性的记录到指定位置,例如控制台,文件,数据库等
    可以随时开关是否记录日志,无需修改源代码

    日志的规范

    一般时一些接口
    常见的有JCL和slf4j

    日志的框架

    类似于接口的实现类
    常见的有Log4J,Logback

    Logback简介

    Logback的官方网站
    性能较log4j更好
    是基于slf4j开发的

    其分为三个技术模块
    logback-core:为其他两个模块奠定了基础
    logback-classic:log4j的一个改良版本,同时完整的实现了slf4j的API
    logback-access:于Tomcat和Jetty容器集成,提供HTTP访问日志的功能

    Logback所需的环境配置

    maven依赖导入

    <dependencies>
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>jcl-over-slf4jartifactId>
                <version>1.7.26version>
            dependency>
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-classicartifactId>
                <version>1.2.3version>
            dependency>
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-coreartifactId>
                <version>1.2.3version>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    导入XML文件以及XML文件的配置信息详解

    
    <configuration>
        
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            
            <target>System.outtarget>
            <encoder>
                
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%npattern>
            encoder>
        appender>
    
        
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
                <charset>utf-8charset>
            encoder>
            
            <file>D:/logback/Demo01/data.logfile>
            
            <rollingPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <fileNamePattern>D:/logback/Demo01/data2-%d{yyyy-MM-dd}.log%i.gzfileNamePattern>
                
                <maxFileSize>1MBmaxFileSize>
            rollingPolicy>
        appender>
    
        
        <root level="ALL">
            
            <appender-ref ref = "CONSOLE"/>
            <appender-ref ref="FILE"/>
        root>
    configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    2019 ICPC香港站 G. Game Design
    如何用BCompare打增量包
    【web渗透思路】敏感信息泄露(网站+用户+服务器)
    停止使用 Python 循环,这三种方法效果更棒
    MySQL数据库入门到大牛_05_排序ORDER BY与分页LIMIT
    爱上开源之golang入门至实战第三章-性能分析PPROF
    MySQL数据库优化
    蓝桥等考Python组别十一级001
    【delphi】中 TNetHTTPClient 注意事项
    视频可回溯系统技术方案vue3+ts+tegg+mysql+redis+oss
  • 原文地址:https://blog.csdn.net/qq_61057438/article/details/127637937