之前我们集成了spring-data-jpa,但由于spring-data-jpa是包装了Hibernate,比较笨重,所以我决定还是将更轻量级一些的Mybatis集成进来作为我的ORM。由于Mybatis默认没有分页,githup上有好多大神写的Mybatis分页插件,可以参考。(本节代码是在上一节基础上修改)
1.首先将Mybatis和pagehelper分页插件的包导入
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
2.编写UserDao.java接口层代码,我没有采用xml进行一一映射,而是采用注解的形式。
package com.zity.springboot.dao;
import com.zity.springboot.domain.UserDomain;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* Created by Andy on 2016/10/30.
*/
@Mapper
public interface UserDao{
/**
* 根据用户名称查询用户
* @param userNo
* @return
*/
@Select("select * from user_domain where userNo=#{userNo}")
UserDomain findByUserNo(@Param(value = "userNo") String userNo);
/**
* 根据用户名称模糊匹配用户
* @param userName
* @return
*/
@Select("select * from user_domain where userName like '%'||#{userName}||'%'")
List<UserDomain> findListByLikeName(@Param(value = "userName") String userName);
}
3.编写UserDomain.java实体类
package com.zity.springboot.domain;
public class UserDomain {
/** 用户id */
private long id;
/** 用户编号 */
private String userNo;
/** 用户名称 */
private String userName;
/** 用户密码 */
private String userPwd;
/** 用户盐值 */
private String salt;
/** 用户状态 */
private String userStatus;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUserNo() {
return userNo;
}
public void setUserNo(String userNo) {
this.userNo = userNo;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public String getUserStatus() {
return userStatus;
}
public void setUserStatus(String userStatus) {
this.userStatus = userStatus;
}
}
4.在UserServiceImpl.java中编写调用方法
package com.zity.springboot.service;
import com.github.pagehelper.PageHelper;
import com.zity.springboot.dao.UserDao;
import com.zity.springboot.domain.UserDomain;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Override
public UserDomain findUserByUserNo(String userNo) {
return userDao.findByUserNo(userNo);
}
@Override
public List<UserDomain> findListByName(String userName) {
PageHelper.startPage(3,1);
return userDao.findListByLikeName(userName);
}
}
package com.zity.springboot.configuration;
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class PageHelperConfig {
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
6.在Controller层添加调用方法,即可在浏览器访问。
分页插件的使用非常简单,只需要在使用查询时添加一句代码PageHelper.startPage(3,1);即可。