Mybatis分页助手与通用mapper

Mybatis分页助手

1、前端分页(不建议使用)
一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。
特点是:简单,很适合小规模的web平台;当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长。
2、后端分页
在ajax请求中指定页码(pageNum)和每页的大小(pageSize),后端查询出当页的数据返回,前端只负责渲染。
特点是:复杂一些;性能瓶颈在MySQL的查询性能,这个当然可以调优解决。一般来说,web开发使用的是这种方式。
  1. 在使用Java Spring开发的时候,Mybatis在处理分页方面还是要写 limit 语句的,好在有个PageHelper插件,节省了编写sql语句的时间。
  2. 分页插件的GIT地址: https://github.com/pagehelper/Mybatis-PageHelper
  3. 使用它可以很方便的进行开发,可以节省开发人员大量的时间。

开始整合mybatis分页助手

  1. 导入pagehelper 的Maven依赖
<!-- Mybatis的分页助手 -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>4.1.4</version>
</dependency>
<dependency>
	<groupId>com.github.jsqlparser</groupId>
	<artifactId>jsqlparser</artifactId>
	<version>0.9.1</version>
</dependency>
  1. 在mybatis 的配置文件中SqlMapConfig.xml配置插件。
<configuration>
	<!-- 定义别名 -->
	<typeAliases>
		<!-- 批量别名定义 指定包路径,自动扫描包下边的pojo,定义别名,别名默认为类名(首字母小写或大写) -->
		<package name="cn.niuniu.project.model" />
	</typeAliases>
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<property name="dialect" value="mysql" />
			<!-- 设置为true时,使用 RowBounds 分页会进行 count 查询 -->
			<property name="rowBoundsWithCount" value="true" />
		</plugin>
	</plugins>
</configuration>

使用分页助手

  1. 设置分页参数PageHelper 以及 获取分页信息 PageInfo分页助手的使用
  2. 使用分页助手需要注意的内容。
  • PageHelper.startPage 方法。
    只有紧跟在 PageHelper.startPage 后边的,mybatis的第一个select 查询方法会被分页。
  • 分页插件不支持带有 for update 语句的分页。
    对于带有 for update 语句的sql,运行时会抛出异常,建议使用手动分页,这类sql应当受到重视。
  • 分页插件不支持关联结果查询。
    虽然不支持关联结果查询,但是支持关联嵌套查询,主 sql 进行分页查询,嵌套的 sql 不查询。
  • 模糊查询进行分页的时候,如果遇到只进行了查询总数,没有进行结果分页结果查询的话,可能有两种情况:
1. mybatis 不是 PageHelper 的问题,是使用查询方法的问题,我用的是逆向工程生成的 entity 以及 mapper ,在进行模糊查询的时候需要自己加上 '%crit%'。
	criteria.andUsernameLike("%"+crit+"%");
2. 仍然不是 mybatis 插件 PageHelper ,在查找中文的时候会出现查询不到问题时,请仔细检查 数据库连接的 url 是否配置了characterEncoding=UTF-8 
	druid 的 url 中不能够出现 &amp; 做 & 的情况 。

mybatis 的通用mapper

  1. 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作。极其方便的使用 Mybatis 单表的增删改查,支持单表操作,不支持通用的多表联合查询。
  2. 通用Mapper的GIT地址: https://gitee.com/free/Mapper
  3. Mybatis 通用 Mapper 详细介绍: http://www.oschina.net/p/mybatis-mapper
  4. 使用它可以很方便的进行开发,可以节省开发人员大量的时间。

mybatis 中添加插件

  1. 添加 通用Mapper 的Maven 依赖
<!-- 通用Mapper -->
<dependency>
	<groupId>com.github.abel533</groupId>
	<artifactId>mapper</artifactId>
	<version>2.3.4</version>
</dependency>
<!-- 之后的使用过程中用到了 JPA 注解 -->
hibernate-entitymanager.jar
或者使用
hibernate-jpa.jar  这个文件在\hibernate\javax\persistence下边
  1. 在 mybatis 的全局配置文件中配置 (SqlMapConfig.xml)
<plugins>
	<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
		<!-- 主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
		<property name="IDENTITY" value="MYSQL" />
		<!-- 通用Mapper接口,多个通用接口用逗号隔开 -->
		<property name="mappers" value="com.github.abel533.mapper.Mapper" />
	</plugin>
</plugins>
  1. 定义 mapper 接口
public interface UserMapper extends Mapper<User>{}
  1. 使用 mybatis 的 JPA 注解,注解实体类
@Table(name="标明")
@Entity
public class User{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;		// 设置主键,以及主键生成方式
	@Column(name="username")
	private String username;
	getter & setter;
}
  1. 右键刚刚集成Mapper 的接口,生成对应的 Junit 测试代码。
点击准备测试的接口类 --> 右键 NEW --> 选择 Junit Test Case
选择生成位置,以及使用的测试方式(JUNIT3 或者Junit4)
  1. 测试方法,设置 @Before ,@test 等注解。
  2. 完成测试之后,可以直接在 @Service 实现类中直接@Autowire 直接注入使用。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值