这篇主要说一下上篇介绍的mybatis分页组件,若是大家以为不必,非要本身封装分页,也是能够的啦,就像博主上一篇,本身写个分页实现,而后本身捣鼓就行了。java
#maven依赖mysql
<!-- 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公共类git
实体公共类 BaseEntity.java,其中的get/set略。说一下@GeneratedValue(strategy = GenerationType.IDENTITY)
主键增加策略,@Transient
实体中若是有和数据库没有对应的属性必需要加这个注解github
@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类,这个类不能被扫描到,以下很简单空着就行spring
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> { }
#Mapper与mapper.xml还有实体类写法sql
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中含有的方法:mybatis
展现一下Mapper中已经有的默认方法
app
#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 } ]