研究了一整天,终于弄明白了Mybatis中xml的分页查询sql语句:
<select id="selectStudentByMap" resultType="Student" parameterType="HashMap">
select * from student limit #{start},#{end};
select>
这里的id=“selectStudentByMap”是指接口方法。
如果要调用这个接口的话,则定义映射路径:
<mapper namespace="com.domain.StudentMapper">
然后输入 com.domain.StudentMapper.selectStudentByMap
这个接口调用的方法这里就不再赘述了。
这里的resultType=“Student”,指的是返回的结果集。不管是返回多个的结果集(list)还是单个的结果集(根据id查询),都是用Student类型来接的。
这里的parameterType=“HashMap”,这是最为关键的,
由于分页查询的语句是长这样子的:
select * from student limit #{start},#{end};
这两个属性不同于以往的增删改查例子,#{id},#{name},#{表的属性}。
怎么定义limit后的这两个属性呢。它们是用来分页的数字,但是又通过什么字段来传。
我一开始用的parameter=“int”,发现一直都没有值传进来。
这里最好使用HashMap,采用键值对映射的方式。HashMap
HashMap
所以的这里#{start}和#{end},是作为HashMap的key值来的,为了弄得这条sql语句特地去学了HashMap..心好累。。。。
这样我们就能在实现层Service中写一个接口:
public List
Service的接口实现方法:
@Override
public List
List
SqlSession session=sqlSessionFactory.openSession();
list=session.selectList("com.domain.StudentMapper.selectStudentByMap", map);
return list;
}
Controller层才是重点:这里我主要介绍start 和end.
HashMap
map.put("start",(currpage-1)*Student.Page_size);
map.put("end", Student.Page_size);
list=istudentservice.selectStudentByMap(map);
是不是有思路了呢,有的话就点个赞啊