分页&日志

分页

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

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

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

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

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

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;

之后我们导入一下要导入的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>
<?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>

再写一下映射文件


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>

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

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;
    }
}

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

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

日志

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

日志的规范

一般时一些接口
常见的有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>

导入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>

你可能感兴趣的:(mybatis,java,数据库)