zoukankan      html  css  js  c++  java
  • 分页

    一、分页

    1.1、数据库的分页:

     select * from user limit 0,2;//显示0到2的页数(记录数),如果只给定一个参数,则从自动0开始查找记录数,#[0 n]

     

    1.2、Mybatis实现查询:

    方式一:通过mapper.xml文件的形式

    方式二:通过Java代码,sqlSession.selectList()等方式实现查询

     

    1.3、Mybatis实现分页查询:

    a.方式一:通过mapper.xml,搭配map实现分页查询

    sqlsession对象创建类:

    package com;//import jdk.internal.loader.Resource;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class MyBatisUtils {
        private static SqlSessionFactory sqlSessionFactory;//提升作用域, 才能用在public static SqlSession getSqlSession()方法中
        static{
             try {
                 //     a.以流的形式加载核心配置文件mybatis-config.xml;
                 //     b.再创建sqlsessionfactory对象,并通过qlsessionfactory对象创建sqlsession会话
                     InputStream inputStream = null;
                     String resource = "mybatis-config.xml";
                     inputStream = Resources.getResourceAsStream(resource);
                     sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
        //使用MyBatis第二步:通过sqlsessionfactory获取sqlsession对象:
        public static SqlSession getSqlSession()
        {
            return  sqlSessionFactory.openSession();
    
        }
    }

    mapper.xml接口实现类:

    parameterType="map" 无需获取key值,会自动查找到map的value,并传入到 #{startindex},#{pagesize}形参中
     <select id="getuserBylimit" parameterType="map" resultType="entity.user">
            select id,name,sex,age,location from mybatis.user limit #{startindex},#{pagesize}
        </select>

    接口定义的方法:

    package main.Dao;
    import entity.user;
    
    import java.util.HashMap;
    import java.util.List;
    
    public interface userDao {
         List<user> getuserBylimit(HashMap hashMap);
    
    }

    测试类:

    import main.Dao.userDao;
    import entity.user;import org.apache.ibatis.session.SqlSession;
    import org.junit.jupiter.api.Test;
    
    
    import com.MyBatisUtils;
    
    import java.util.HashMap;
    import java.util.List;
    
    public class userDaotest {
        @Test
        public  void getUserBylimit()
        {
            try{
                SqlSession sqlSession = MyBatisUtils.getSqlSession();//获取session会话
                userDao userDao = sqlSession.getMapper(main.Dao.userDao.class);//拿到接口实现类,即userMapper.xml文件
                HashMap hashMap = new HashMap<String,Integer>();
                hashMap.put("startindex",0);
                hashMap.put("pagesize",2);
                List<user> user=userDao.getuserBylimit(hashMap);//执行userMapper.xml里面的getuserlist()方法
                for (user u:user) {
                    System.out.println(u);
                }
            }catch(NullPointerException E){
                E.printStackTrace();
                System.out.println(E);
            }
        }
    
    }

    执行结果:

    user{id=1, name='李壵', age=23, sex=男, location='西南大学'}
    user{id=2, name='罗子春', age=24, sex=男, location='临沧'}

     

    b.方式二:通过Java代码RowBounds分页,不再使用SQL实现分页

    接口定义的方法:

    package main.Dao;
    import entity.user;
    import java.util.List;
    
    public interface userDao {
         List<user> getuserByRowbands();
    }

    mapper.xml:

    <?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="main.Dao.userDao">
         <select id="getuserByRowbands"  resultType="entity.user">
            select id,name,sex,age,location from mybatis.user
         </select>
    </mapper>

    测试类:

    import main.Dao.userDao;
    import entity.user;
    import org.apache.ibatis.session.RowBounds;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.jupiter.api.Test;
    
    
    import com.MyBatisUtils;
    
    import java.util.HashMap;
    import java.util.List;
    
    public class userDaotest {
        @Test
        public  void getuserByRowbands()
        {
            RowBounds rowBounds = new RowBounds(1,3);
            SqlSession sqlSession = MyBatisUtils.getSqlSession();//获取session会话
            List<user> users = sqlSession.selectList("Dao.userMapper.getuserByRowbands");//获取接口类的方法getUserByRowbands()
          
    for (user user : users) { System.out.println(user); } } }

    运行结果:

    user{id=1, name='李壵', age=23, sex=男, location='西南大学'}
    user{id=2, name='罗子春', age=24, sex=男, location='临沧'}

     
  • 相关阅读:
    C语言第四次博客作业嵌套循环
    C语言第六次博客作业数据类型
    C语言第五次博客作业函数
    C语言第二次博客作业分支结构
    MD5 DSA RSA 简单 区别
    关于Linux Grep命令使用的详细介绍
    最好、最智能化、最方便的Java开发软件 IntelliJ IDEA 10.5.2
    Linux Find 命令精通指南
    linux 下面递归查找
    公钥和私钥的解释
  • 原文地址:https://www.cnblogs.com/ibear/p/13026493.html
Copyright © 2011-2022 走看看