今天使用了abel533大神的mybatis分页插件,遇到了写问题,特意在这里做个总结,方便以后查找。

首先该测试是在本人的ssm基础框架上实现的,有兴趣的可以先看看本人的博客置顶帖。高手就略过吧。

主要使用abel533的两个东西,一个是mapper,主要作用是单表的通用mapper;另一个是mybatis的分页插件pageHelper

ok,开始吧。

(一)集成

首先是jar包,此处我们使用maven管理jar包,引入下面两个jar包就可以了:

 <!-- 通用mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.1.2</version></dependency><!-- pagehelper jar包 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.0.0</version></dependency>

然后是mybatis.xml的配置,主要是两个拦截器(更多属性配置请查看abel533大神的开发文档):

        <plugins><!-- com.github.pagehelper为PageHelper类所在包名 --><plugin interceptor="com.github.pagehelper.PageHelper"><property name="dialect" value="mysql"/></plugin><!-- mapper插件放在最下面 --><plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor"><!--================================================--><!--可配置参数说明(一般无需修改)--><!--================================================--><!--UUID生成策略--><!--配置UUID生成策略需要使用OGNL表达式--><!--默认值32位长度:@java.util.UUID@randomUUID().toString().replace("-", "")--><!--<property name="UUID" value="@java.util.UUID@randomUUID().toString()"/>--><!--主键自增回写方法,默认值MYSQL,详细说明请看文档--><property name="IDENTITY" value="mysql"/><!--序列的获取规则,使用{num}格式化参数,默认值为{0}.nextval,针对Oracle--><!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName--><property name="seqFormat" value="{0}.nextval"/><!--主键自增回写方法执行顺序,默认AFTER,可选值为(BEFORE|AFTER)--><!--<property name="ORDER" value="AFTER"/>--><!--通用Mapper接口,多个通用接口用逗号隔开--><property name="mappers" value="tk.mybatis.mapper.common.Mapper"/></plugin></plugins>

两步就可以集成mapper和pageHelper插件。

(二)具体使用

1.首先是mapper,需要继承通用的Mapper<T>,必须指定泛型<T>,下面是例子:

public interface UserInfoMapper extends Mapper<UserInfo> {//其他必须手写的接口...}

2.泛型(实体类)<T>的类型必须符合要求(此处引用,gen更多请查阅文档http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/3.Use.md)

实体类按照如下规则和数据库表进行转换,注解全部是JPA中的注解:表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info。表名可以使用@Table(name = "tableName")进行指定,对不符合第一条默认规则的可以通过这种方式指定表名.字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式.可以使用@Column(name = "fieldName")指定不符合第3条规则的字段名使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用.建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键.默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低).实体类可以继承使用,可以参考测试代码中的tk.mybatis.mapper.model.UserLogin2类.由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型.

3.将继承的Mapper接口添加到mybatis配置中,有两种写法,此处采用spring的方式:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.isea533.mybatis.mapper"/>
</bean>

4.就是在代码中使用了,此处,我将粘贴上mapper,service和controller的示例代码:

(1)首先是controller:

import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import com.aodong.mybatisTest.model.Student;
import com.aodong.mybatisTest.service.PageTestService;@Controller
@RequestMapping("/pageHelper")
public class PageHelperController {@Autowiredprivate PageTestService pageTestService;@RequestMapping(value="/requestTest", method=RequestMethod.GET)@ResponseBodypublic List<Student> requestTest(@RequestParam(value="pageNum", required=false, defaultValue="1")int pageNum,@RequestParam(value="pageSize", required=false, defaultValue="10")int pageSize){return pageTestService.selectPage(pageNum, pageSize);}
}

(2)然后是service:

1.BaseService

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.pagehelper.PageHelper;
import tk.mybatis.mapper.common.Mapper;public abstract class BaseService<T> {@Autowiredprotected Mapper<T> mapper;public int save(T entity){return mapper.insert(entity);}public int delete(T entity){return mapper.deleteByPrimaryKey(entity);}/*** 单表分页查询** @param pageNum* @param pageSize* @return*/public List<T> selectPage(int pageNum,int pageSize){PageHelper.startPage(pageNum, pageSize);List<T> list = mapper.select(null);System.out.println(list.size());//Spring4支持泛型注入return list;}
}

2.service接口

import java.util.List;
import com.aodong.mybatisTest.model.Student;public interface PageTestService {public List<Student> selectPage(int pageNum, int pageSize);
}

3.serviceImpl实现类

import org.springframework.stereotype.Service;
import com.aodong.mybatisTest.model.Student;
import com.aodong.mybatisTest.service.BaseService;
import com.aodong.mybatisTest.service.PageTestService;
@Service("pageTestService")
public class PageTestServiceImpl extends BaseService<Student> implements PageTestService {
}

(3)然后是mapper

import tk.mybatis.mapper.common.Mapper;
import com.aodong.mybatisTest.model.Student;public interface PageTestMapper extends Mapper<Student> {
}

(4)最后是model,一般要求最少有个id注解

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;public class Student implements Serializable {/*** */private static final long serialVersionUID = 1L;/*** 主键*/@Id@Column(name = "Id")@GeneratedValue(strategy = GenerationType.IDENTITY)private long id;private Integer age;private String name;private String nicename;public Student() {}public Student(long id, Integer age, String name, String nicename) {super();this.id = id;this.age = age;this.name = name;this.nicename = nicename;}public long getId() {return id;}public void setId(long id) {this.id = id;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNicename() {return nicename;}public void setNicename(String nicename) {this.nicename = nicename;}@Overridepublic String toString() {return "Student [id=" + id + ", age=" + age + ", name=" + name+ ", niceName=" + nicename + "]";}}

使用abel533大神的mybatis分页插件总结相关推荐

  1. springboot整合mybatis分页插件

    1.springboot版本为2.0.1,数据库为mysql,引入pagehelper的pom依赖 <!--mybatis分页插件--> <dependency><gro ...

  2. 解决使用mybatis分页插件PageHelper的一个报错问题

    解决使用mybatis分页插件PageHelper的一个报错问题 参考文章: (1)解决使用mybatis分页插件PageHelper的一个报错问题 (2)https://www.cnblogs.co ...

  3. MyBatis分页插件PageHelper使用练习

    转载自:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 1.环境准备: 分页插件p ...

  4. MyBatis学习总结(17)——Mybatis分页插件PageHelper

    2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊 ...

  5. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  6. Mybatis:Mybatis分页插件

    文章目录 1. Mybatis分页插件 1.1 分页插件介绍 1.2 分页插件的使用 1.3 分页插件的参数获取 1.4 分页插件知识小结 分页助手相关 API 1. Mybatis分页插件 1.1 ...

  7. Mybatis分页插件MybatisHelper的使用

    Mybatis分页插件MybatisHelper的使用 MybatisHelper是Mybatis的一个数据分页插件,是国内的一个牛人""刘增辉""所写,功能强 ...

  8. Mybatis分页插件PageHelper使用教程(图文详细版)

    Mybatis分页插件PageHelper使用教程(图文详细版) 1.配置 2.后台代码 controller类 html页面 html页面效果图 1.配置 小编的项目是springBoot项目,所以 ...

  9. mybatis分页插件的使用以及报错解决

    一.mybatis分页插件的前提配置 添加依赖 <dependency><groupId>com.github.pagehelper</groupId><ar ...

最新文章

  1. 数据同步关于去除乱码插入mysql数据库
  2. 信息化基础建设系列文章汇总 .NET 平台业务项目实践
  3. 乐讯网python论坛_乐讯论坛
  4. junit:junit_简而言之,JUnit:测试隔离
  5. 先出报表还是先计提所得税_一道大综合题搞定“与子公司的内部交易合并报表抵销分录”的逻辑...
  6. else应输入一个语句是什么意思_Python学习基础篇 -4: Python中的转弯---分支语句
  7. js 取html自定义属性,JS操作html中的自定义属性
  8. 华为机试HJ76:尼科彻斯定理
  9. hibernate 执行sql在哪个类_一篇文章让你马上入门Hibernate
  10. ElementUI简单分页
  11. python调用大漠插件寻路_简单大漠插件调用.py
  12. 倒计时小插件,懒人专用
  13. 函数信号发生器的功能介绍
  14. 知识图谱学习(一) py2neo
  15. dwg如何转换成pdf格式?
  16. JAVA 系列——包装类
  17. 手机呼叫转移怎么设置
  18. 电视剧《天道》里的商业思维
  19. [DirectX]DirectX9使用Effect和Vertexshader、PixelShader的区别
  20. 阿里校园招聘前端面试

热门文章

  1. [JSOI2016]扭动的回文串
  2. BZOJ4755 [Jsoi2016]扭动的回文串
  3. 模拟linux终端测试java,Linux 伪终端(pty)
  4. 学生选课系统项目介绍及需求
  5. 上海计算机应用技术,电信科学技术第一研究所(上海)
  6. Web前端开发到底是什么?最通俗易懂的解释了!
  7. 2012年重要的软件开发发展
  8. 360正式造车,网友:自带杀毒软件吗?
  9. 【calendar日历组件】elementul的日历组件点击拿到对应的日期或者触发某些事件
  10. [ahk]解析大智慧自选股blk文件中的股票代码