新手最应该看的Mybatis中xml的分页查询sql语句

研究了一整天,终于弄明白了Mybatisxml的分页查询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,采用键值对映射的方式。HashMapmap=new HashMap();

HashMap的特有属性,特别方便我们传进来数值。

 

所以的这里#{start}#{end},是作为HashMapkey值来的,为了弄得这条sql语句特地去学了HashMap..心好累。。。。

 

 

这样我们就能在实现层Service中写一个接口:

public List selectStudentByMap(HashMap map);

 

Service的接口实现方法:

 

@Override

public List selectStudentByMap(HashMap map) {

List list=new LinkedList();

SqlSession session=sqlSessionFactory.openSession();

    list=session.selectList("com.domain.StudentMapper.selectStudentByMap", map);

return list;

}

 

 

Controller层才是重点:这里我主要介绍start 和end.  

 

 HashMap map=new HashMap();

  map.put("start",(currpage-1)*Student.Page_size);

  map.put("end", Student.Page_size);

  list=istudentservice.selectStudentByMap(map);

 

 

是不是有思路了呢,有的话就点个赞啊

你可能感兴趣的:(HashMap,Mybatis)