mybatis-分页查询学习笔记


import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import cn.itcast.javaee.mybatis.util.MybatisUtil;

/**
* 持久层
* @author AdminTC
*/
public class StudentDao {
/**
* 增加学生
*/
public void add(Student student) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
sqlSession.insert(Student.class.getName()+".add",student);
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
}
/**
* 无条件分页
* @param start 表示在mysql中从第几条记录的索引号开始显示,索引从0开始
* @param size 表示在mysql中最多显示几条记录
*/
public List<Student> findAllWithFy(int start,int size) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();

Map<String,Object> map = new LinkedHashMap<String,Object>();
map.put("pstart",start);
map.put("psize",size);
return sqlSession.selectList(Student.class.getName()+".findAllWithFy",map);
}catch(Exception e){
e.printStackTrace();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
}

/**
* 有条件分页
*/
public List<Student> findAllByNameWithFy(String name,int start,int size) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
Map<String,Object> map = new LinkedHashMap<String, Object>();
map.put("pname","%"+name+"%");
map.put("pstart",start);
map.put("psize",size);
return sqlSession.selectList(Student.class.getName()+".findAllByNameWithFy",map);
}catch(Exception e){
e.printStackTrace();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
}

public static void main(String[] args) throws Exception{
StudentDao dao = new StudentDao();

//for(int i=1;i<=10;i++){
// dao.add(new Student(i,"哈哈",7000D));
//}

System.out.println("--------------------第一页");
List<Student> studentList1 = dao.findAllByNameWithFy("哈",0,3);
for(Student s : studentList1){
System.out.println(s.getId()+":"+s.getName()+":"+s.getSal());
}
System.out.println("--------------------第二页");
List<Student> studentList2 = dao.findAllByNameWithFy("哈",3,3);
for(Student s : studentList2){
System.out.println(s.getId()+":"+s.getName()+":"+s.getSal());
}
System.out.println("--------------------第三页");
List<Student> studentList3 = dao.findAllByNameWithFy("哈",6,3);
for(Student s : studentList3){
System.out.println(s.getId()+":"+s.getName()+":"+s.getSal());
}

}
}

<?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="cn.itcast.javaee.mybatis.app10.Student"> 

    <resultMap type="cn.itcast.javaee.mybatis.app10.Student" id="studentMap">
        <id property="id" column="students_id"/>
        <result property="name" column="students_name"/>
        <result property="sal" column="students_sal"/>
    </resultMap>

    <insert id="add" parameterType="cn.itcast.javaee.mybatis.app10.Student">
        insert into students(students_id,students_name,students_sal)
        values(#{id},#{name},#{sal});
    </insert>

    <select id="findAllWithFy" parameterType="map" resultMap="studentMap">
        select students_id,students_name,students_sal
        from students
        limit #{pstart},#{psize}
    </select>

    <select id="findAllByNameWithFy" parameterType="map" resultMap="studentMap">
        select students_id,students_name,students_sal
        from students
        where students_name like #{pname}
        limit #{pstart},#{psize}
    </select>

</mapper>

原文地址:http://blog.51cto.com/357712148/2107443

时间: 2024-11-05 12:09:28

mybatis-分页查询学习笔记的相关文章

mybatis分页查询

今天研究了一下MySQL的分页查询,记录并分享如下: 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分页功能,但是如果m的值越大,查询的性能会越低(越后面的页数,查询性能越低),因为MySQL同样需要扫描过m+n条记录.  方式2: select * from table where id > #max_id# order by id limit n; 该查询每次会

Oracle 数据库中对记录进行分页处理——学习笔记

学习到 oracle 的视图的时候,了解到对 Oracle 中数据的记录进行分页处理和 Mysql 提供的 limit 来进行分页处理大有不同,limit 是 mysql 中特有的关键字. 那么在 oracle 中如何实现对记录的分页处理呢? 解决办法:使用 ROWNUM 1.问题如下:查询出成绩前10名的学生的成绩 SELECT name, scoreFROM (SELECT name,score FROM students   ORDER BY score DESC )WHERE rownu

mybatis ---- 分页查询,,源码

PageHelper 有封装的分页插件---直接用即可 @GetMapping("/toDeptList")public BaseResponse toDeptList(Model model,@RequestParam(required = false,defaultValue = "1",value = "pn")Integer pn ) { BaseResponse response = new BaseResponse(); try{ P

分组统计查询(学习笔记)

查询出公司每个月支出的工资总和 --查询出公司每个月支出的工资总和 SELECT SUM(sal) FROM emp; 查询出公司的最高工资,最低工资和平均工资 --查询出公司的最高工资,最低工资和平均工资 SELECT MAX(sal),MIN(sal),ROUND(AVG(sal),2) FROM emp; 统计出公司最早雇佣和最晚雇佣的雇佣日期 --统计出公司最早雇佣和最晚雇佣的雇佣日期 SELECT MIN(hiredate) 最早雇佣日期 , MAX(hiredate) 最晚雇佣日期

多表查询(学习笔记)

语法: SELECT [DISTINCT] * | 列名称 [AS]别名,........ FROM 表名称1 [别名1],表名称2 [别名2],... [WHERE 条件(s)] [ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 示例一 查询所有员工的信息和部门信息     SELECT * FROM EMP,DEPT; 查询结果可以看到有56条记录,而emp表只有14条,dept表只有4条,很多重复记录,这就是多表查询所产生的笛卡尔积 消除

精通SQL结构化查询---学习笔记1

1.数据库体系结构的三级模式为:外模式.概念模式.内模式. 内模式又称存储模式,是对数据的物理结构和存储方式的描述.内模式是由数据库系统提供的数据定义语言定义的. 概念模式又称数据库模式,是数据库中全部数据的逻辑结构的描述.概念模式以某种数据模型为基础,并用模式定义语言定义这些内容.概念模式可以看作是现实世界中的实体在具体数据库系统中的实现. 外模式又称用户模式或子模式,通常由概念模式导出,是概念模式的子集.其主要功能是定义了允许用户操作的数据.可以将外模式理解为用户看到的数据视图. 2.一个完

精通SQL结构化查询---学习笔记2

1. SQL中表的规定: * 每张表的表名必须以字母开头,最大长度为30个字符. * 一张表可以由若干列组成.同一张表中,列名惟一,列名也称为属性名或字段. * 同一列的数据必须有相同的数据类型. * 表中的每一列值必须是不可分割的基本数据项. * 表中的一行称为一个元组,相当于一条记录.2. SQL数据类型2.1.字符类型:包括固定长度和可变长字符变量,固定长度字符变量少于定义的长度时,数据库会自动在字符右边以空格填补到20个字符:可变长字符串可以存储任意长度的字符(其最大存储长度取决于采用的

精通SQL结构化查询---学习笔记3

对于汉字的排序,是按首字母的顺序来排序的.使用DISTINCT是要要付出代价的:因为要去掉重复值,必须对结果关系进行排序,相同的元组排列在一起,只有按这种方法对元组进行分组才能去掉重复值,而这一工作甚至比查询本身还费时间. 使用'*'通配符时要慎重,在不需要查询所有列时,尽量采用前面介绍的单列查询或多列查询,以免占用过多的资源. ORDERBY子句一定要放在所有子句的最后,默认是ASC(递增排序):ORDER BY后面可 以采用1.2.3--进行排序,1.2.3--代表了SELECT后面列的次序

PHP分页函数 学习笔记

function smarty_function_assign_debug_info($params, &$smarty){ $assigned_vars = $smarty->_tpl_vars; ksort($assigned_vars); if (@is_array($smarty->_config[0])) { $config_vars = $smarty->_config[0]; ksort($config_vars); $smarty->assign("