这篇主要说一下上篇介绍的mybatis分页组件,如果你们觉得没必要,非要自己封装分页,也是可以的啦,就像博主上一篇,自己写个分页实现,然后自己捣鼓就好了。
#maven依赖
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${spring.mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-autoconfigure</artifactId>
<version>${spring.mybatis.version}</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 分页插件 https://github.com/pagehelper/Mybatis-PageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
#实体公共类与Mapper公共类
实体公共类 BaseEntity.java,其中的get/set略。说一下@GeneratedValue(strategy = GenerationType.IDENTITY)
主键增长策略,@Transient
实体中如果有和数据库没有对应的属性必须要加这个注解
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
[@Transient](https://my.oschina.net/transient)
private Integer page = 1;
[@Transient](https://my.oschina.net/transient)
private Integer rows = 10;
公用的Mapper.java类,这个类不能被扫描到,如下很简单空着就行
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}
#Mapper与mapper.xml还有实体类写法
Mapper类,mapper类继承BaseMapper类,下面的那个接口是扩展的,写自己的业务的。到这的时候,你的增删改查都具备了。
@Repository("userMapper")
public interface UserMapper extends BaseMapper<User>{
/**
* 这个接口是自己业务接口
* @param name
* @return
*/
List<User> queryUserInfoByName(@Param("name") String name);
}
mapper.xml文件,看这个文件中除了自己扩展的那个接口外其他的都木有,但是增删改查都有了哦。
<?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="com.dengzy.kuj.mybatis.dao.UserMapper">
<resultMap id="BaseResultMap" type="com.dengzy.kuj.mybatis.model.User">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="createDate" jdbcType="TIMESTAMP" property="createdate" />
</resultMap>
<sql id="Base_Column_List">
id, name, createDate
</sql>
<select id="queryUserInfoByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from user
<where>
<if test="null != name">
and name = #{name,jdbcType=VARCHAR}
</if>
</where>
</select>
</mapper>
#Service里面使用 Service里面使用和平时一样是正常使用的,此处有展示一下mapper中含有的方法:
展示一下Mapper中已经有的默认方法
#Controller里面使用 从Controller里面使用,service返回的数据放到PageInfo中即可
@RequestMapping(value = "queryUserPage")
public PageInfo<User> queryUserPage(User user){
List<User> userInfoList = userService.getAllUser(user);
return new PageInfo<User>(userInfoList);
}
#配置文件配置
配置文件如下,为何要配置这几个属性是根据自己需要来的,正常默认即可使用了。
#mybatis
mybatis:
config-location: classpath:META-INF\mybatis-config.xml
mapper:
mappers:
- com.dengzy.kuj.mybatis.common.mapping.BaseMapper
not-empty: true
identity: MYSQL
pagehelper:
helperDialect: mysql
reasonable: true #为了使用输入页数为负或者超出最大页时候使页数为最小或最大值
supportMethodsArguments: true
params: count=countSql
pageSizeZero: true #pageSize=0 or RowBounds.Limit = 0的时候就不适用分页,但是返回对象还是PageInfo
#启动及浏览器访问
你说你不需要这么多参数,那你就不需要返回PageInfo对象就可以了,请求返回如下
[
{
"id": 2,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703436000
},
{
"id": 3,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703459000
},
{
"id": 4,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703660000
},
{
"id": 5,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703698000
}
]