Mybatis在SSM中实现分页操作

最近在写java课设时需要做一个需邱分页操作,虽然可以使用分页插件,但还是想自己写一下,加深印象,忘记了做出整理记录一下。

分页查询时Sql语句使用limit关键字,需要传入开始索引和每页展示的条数。mybatis有两种传参方式。

一、顺序传参

Sql中的参数使用arg0,arg1...或param1,param2...表示参数的顺序。此方法可读性较低,在开发中不建议使用。

  • 持久层的写法
  //分页查询信息
    List<Student> findPage(int start,int pagesize);
  • 映射文件(SSM项目中在resource目录下报名路径要与持久层一致)

  •  映射文件约束
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="edu.beihua.dao.StudentDao">
    <!--顺序传参-->
    <select id="findPage" resultType="edu.beihua.domain.Student">
        select * from student limit #{arg0},#{arg1}
    </select>
</mapper>
  • 在mybatis核心文件中配置映射文件
<?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>
    <!--mybaties配置文件-->
    
    <!--  注册映射文件  -->
    <mappers>
        <mapper resource="edu/beihua/dao/StudentDao.xml"></mapper>
    </mappers>
    
    <!-- 或者以上可以用这种写法代替 -->
     <select id="findPage" resultType="edu.beihua.domain.Student">
        select * from student limit #{param1},#{param2}
    </select>
    
</configuration>

  • 项目结构

第二种:@Param传参

  • 持久层接口方法
//第二中分页实现
    List<Student> findPage1(
        @Param("startIndex") int startIndex,
        @Param("pageSize")int pageSize);
  • 映射文件中
 <select id="findPage1" resultType="edu.beihua.domain.Student">
        select * from student limit #{startIndex},#{pageSize}
    </select>

第三种:POJO传参

自定义POJO类,该类的属性就是要传递的参数,在SQL语句中绑定参数时使用POJO的属性名作为参数名即可。此方式推荐使用。

  • 建立实体PageQuery
public class PageQuery {
    private int startIndex;
    private int pageSize;
    //省略构造器 set/get方法
}
  • 编写持久层接口
  //第三种POJO传参
    List<Student> findPage2(PageQuery pageQuery);
  • 映射文件
 <!--POJO传参-->
    <select id="findPage2" 
        resultType="edu.beihua.domain.Student"
        parameterType="edu.beihua.domain.PageQuery">
        select  * from student limit #{startIndex},#{pageSize}
    </select>

第四种:Map传参

如果不想自定义POJO,可以使用Map作为传递参数的载体,在SQL语句中绑定参数时使用Map的Key作为参数名即可。此方法推荐使用。

  • 持久层
 //Map集合传参
    List<Student> findPage3(Map<String,Object> params);
  • 映射文件
   <!--Map传参-->
    <select id="findPage3" resultType="edu.beihua.domain.Student" 
                           parameterType="map">
        select * from student limit #{startIndex},#{pageSize}
    </select>
  • 测试
   Map<String,Object> params = new HashMap();
        params.put("startIndex",0);
        params.put("pageSize",4);
        List<Student> page = studentDao.findPage3(params);


        page.forEach(System.out::println);

以上就是常用的mybatis常用的分页查询啦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明天码上有钱啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值