MyBatis——主配置文件的相关内容、使用PageHelper插件进行分页查询

news/2025/2/23 21:52:25

文章目录:

1.MyBatis主配置文件

1.1 主配置文件中标签的编写顺序

1.2 使用数据库属性配置文件(包含properties标签)

1.4 settings标签(设置日志)

1.5 typeAliases标签(设置别名,不推荐使用。。。)

1.6 plugins标签(声明插件)

1.7 environment标签(配置环境)

1.8 mappers标签(mapper文件的配置读取)

2.MyBatis中的分页查询

2.1 在pom.xml中加入pagehelper依赖 

2.2 在mybatis主配置文件中,加入声明插件的标签内容

2.3 在dao接口中创建一个方法

2.4 编写dao接口方法对应的 sql 语句(mapper文件)

2.5 编写测试方法

2.6 代码运行结果


1.MyBatis主配置文件

1.1 主配置文件中标签的编写顺序

<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, 
objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

在以上的这些标签中,我们主要使用的有:👇👇👇 

  1. properties
  2. settings
  3. typeAliases
  4. plugins
  5. environments
  6. mappers

1.2 使用数据库属性配置文件(包含properties标签)

我们需要把数据库的配置信息放到一个单独的文件中,进行独立管理,这个文件的扩展名是 properties。

在resources目录下,创建 XXX.properties 文件。 👇👇👇

而后,在这个文件中,写入下面的内容,使用 key=value的格式定义数据:👇👇👇 (数据库连接的相关信息)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=utf-8
jdbc.username=root
jdbc.password=12345678

接下来,在mybatis主配置文件中,使用property标签引用外部属性配置文件: 👇👇👇

<!--
     使用外部属性配置文件
     resource: 指定类路径下的某个属性配置文件
-->
<properties resource="jdbc.properties"/>

最后,在mybatis主配置文件中,找到 <dataSource> 标签,将其中的内容进行修改:👇👇👇

使用 ${key} 来获取相应的 key 对应的 value 值。例如 value="${jdbc.driver}",表示此时 value="com.mysql.jdbc.Driver"。

<dataSource type="POOLED">
    <!--driver:驱动内容-->
    <property name="driver" value="${jdbc.driver}"/>
    <!--连接数据库的url-->
    <property name="url" value="${jdbc.url}"/>
    <!--用户名-->
    <property name="username" value="${jdbc.username}"/>
    <!--密码-->
    <property name="password" value="${jdbc.password}"/>
</dataSource>

1.4 settings标签(设置日志)

<!-- 设置日志 -->
<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

1.5 typeAliases标签(设置别名,不推荐使用。。。)

<!-- 设置别名 -->
<typeAliases>

</typeAliases>

1.6 plugins标签(声明插件)

<!-- 声明插件 -->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>

1.7 environment标签(配置环境)

    <!--
         <environments>:配置环境,在这里面可以配置多个 <environment></environment> 子标签
         属性:default,必须是某个<environment>标签的id属性值,表示MyBatis默认连接的数据库
    -->
    <environments default="development">
        <!--
             <environment>:环境标签,表示一个数据库的连接信息
             属性:id是自定义的环境标识,唯一值
        -->
        <environment id="development">
            <!--
                 <transactionManager />:事务管理器
                 属性:type,表示事务管理器的类型
                 属性值:1)JDBC:使用Connection对象,由MyBatis自己完成事务的处理
                       2)MANAGED:管理,表示把事务的处理交给容器实现(由其他软件完成事务的处理)
            -->
            <transactionManager type="JDBC"/>
            <!--
                 <dataSource>:配置数据源:创建Connection对象,连接到数据库
                 属性:type,数据源的类型
                 属性值:1)POOLED,MyBatis会在内存中创建PooledDataSource类,管理多个Connection连接对象,使用的连接池
                       2)UNPOOLED,不使用连接池,MyBatis会在内存中创建UnPooledDataSource类
                       3)JNDI,Java命名和目录服务
            -->
            <dataSource type="POOLED">
                <!--driver:驱动内容-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--连接数据库的url-->
                <property name="url" value="${jdbc.url}"/>
                <!--用户名-->
                <property name="username" value="${jdbc.username}"/>
                <!--密码-->
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

1.8 mappers标签(mapper文件的配置读取)

    <!--
         指定其他mapper文件的位置:目的是可以找到其他mapper文件的sql语句
    -->
    <mappers>
        <!--
             第一种方式:resource="mapper文件的路径"
             优点:文件清晰,加载的文件是明确的,文件位置比较灵活
             缺点:文件比较多,代码量相对就会比较大,管理难度大
        -->
        <mapper resource="com/bjpowernode/dao/StudentDao.xml"/>

        <!--
             第二种方式:使用<package>标签
             name:包名,即mapper文件所在的包名
             特点:把这个包中所有的mapper文件一次加载
             使用要求:1. mapper文件和dao接口在同一目录
                     2. mapper文件和dao接口的名称完全一致
        -->
        <!-- <package name="com.bjpowernode.dao"/> -->
    </mappers>

2.MyBatis中的分页查询

PageHelper用做数据分页,它在你的 sql 语句后面加入分页的 sql 内容。

例如我们使用 mysql 数据库,它就会在 select * from student 后面加上 limit 语句。

其使用步骤如下:👇👇👇 

2.1 在pom.xml中加入pagehelper依赖 

<!--PageHelper依赖-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.10</version>
</dependency>

2.2 在mybatis主配置文件中,加入声明插件的<plugins>标签内容

<!-- 声明插件 -->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>

2.3 在dao接口中创建一个方法

package com.bjpowernode.dao;

import com.bjpowernode.entity.Student;

import java.util.List;

/**
 *
 */
public interface StudentDao {

    List<Student> selectAllStudent();

}

2.4 编写dao接口方法对应的 sql 语句(mapper文件)

<select id="selectAllStudent" resultType="com.bjpowernode.entity.Student">
    select * from student order by id
</select>

2.5 编写测试方法

查询语句之前调用 PageHelper.startPage 静态方法。

除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。

在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。 

    @Test
    public void testPageHelper() {
        SqlSession session = MyBatisUtil.getSqlSession();
        StudentDao studentDao=session.getMapper(StudentDao.class);
        //调用PageHelper的方法
        PageHelper.startPage(1,3);
        List<Student> students=studentDao.selectAllStudent();
        students.forEach( stu-> System.out.println("stu === " + stu));
        session.close();
    }

2.6 代码运行结果

 


http://www.niftyadmin.cn/n/712026.html

相关文章

ML_Review_PCA(Ch4)

Note sth about PCA(Principal Component Analysis)   ML6月20日就要考试了&#xff0c;准备日更博客&#xff0c;来记录复习一下这次ML课所学习的一些方法。 博客是在参考老师的ppt&#xff0c;以及戳这里&#xff0c;学习播客之后完成的&#xff0c;主要运用ppt的公式&#…

linux C(hello world)

1.使用vi/vim进行编写代码并保存为hello_world.c.如下&#xff1a; /* This is my first C program*/ #include <stdio.h> int main(){printf("Hello World!\n");return 0; }2.使用gcc进行编译 gcc hello_world.c -o hello_world 3.像执行shell脚本一样执行 ./…

Python setup.py和MANIFEST.in文件

Setup.py文件 from setuptools import setup from codecs import open# 第三方依赖包及版本号 requires [beautifulsoup4>4.3.2,gearman>2.0.2,pymongo>2.7.2,threadpool>1.2.7,geoip2>2.1.0,pywin32>219]# 包列表 packages [MSE,MSE.Device,MSE.Proxy,MSE…

常用技巧_莫德里奇常用的三个过人技巧

大家好&#xff0c;今天我们学习莫德里奇常用的三个过人摆脱技巧&#xff0c;希望大家喜欢&#xff01;今天学习的三个技巧都是莫德里奇在比赛中常用的三个技巧&#xff0c;技巧不难&#xff0c;但很实用&#xff0c;下面我们开始学习&#xff01;第一个技巧&#xff1a;第一个…

Spring——框架概述(概念理解)

文章目录&#xff1a; 1.什么是Spring框架&#xff1f; 2.Spring的优点 2.1 轻量 2.2 针对接口编程&#xff0c;解耦合 2.3 AOP编程的支持 2.4 方便集成各种优秀框架 3.Spring的体系结构 1.什么是Spring框架&#xff1f; Spring 是于 2003 年兴起的一个轻量级的 Java …

linux命令设计,设计模式学习之——命令模式

定义&#xff1a;命令模式&#xff1a;将一个请求封装为一个对象&#xff0c;从而使你可用冉的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持课撤销的操作。UML&#xff1a;命令模式涉及到五个角色&#xff0c;它们分别是&#xff1a;客户端(…

Android Studio断点调试

Android Studio断点调试 Android Studio包含一个debugger程序,可以帮助你在模拟器和真机上调试你的android应用.通过Android Studio的debugger,你可以: 选择你想调试的设备.在代码上设置断点.在运行时去检查变量和表达式的值.可能平时大家调试代码都是通过打印log的形式,今天带…

python第四十二天 mysql数据库查找数据的方法。

今日内容 1.外键的变种 唯一索引&#xff1a;关键字 unique(num) 作用&#xff1a;使指定的列&#xff0c;中的属性不能重复,并且加速查找案例&#xff1a;create table t5(id int,num int,unique(num))engineInnodb charsetutf8;上述案例num列的属性就不能再重复了&#xff0c…