這篇主要說一下上篇介紹的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 } ]