开发环境
jdk | 1.8.X |
Dynamic Web Module | 3.1 |
SpringBoot | 1.5.X |
apache-maven | 3.5.2 |
apache-tomcat | 8.5.24 |
MySQL | 5.0.67 |
功能
SpringBoot+Mybatis+TkMapper+Pagehelper整合,实现数据分页,其中利用restclient发出http请求进行测试
Maven添加依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>czx</groupId>
<artifactId>SpingBootDemo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SpingBootDemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<finalName>SpingBootDemo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目结构
Bean
package com.example.bean;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
@Component
@Table(name = "user")
public class User {
@Id
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
}
Mapper类(DAO层)
原生mapper接口定义,放在启动类的同级目录
package com.example;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
@Repository
public interface MyMapper<T> extends Mapper<T> ,MySqlMapper<T> {
}
UserMapper定义,相当于UserDAO的实现,大大简化了代码量 。@Repository注解用于将数据访问层(DAO 层)的类标识为Spring Bean。具体只需将该注解标注在DAO类上即可。
package com.example.mapper;
import org.springframework.stereotype.Repository;
import com.example.MyMapper;
import com.example.bean.*;
@Repository
public interface UserMapper extends MyMapper<User>{
}
测试类
package com.example;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.bean.User;
import com.example.mapper.UserMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class AppTest {
@Autowired
private UserMapper userMapper;
/**
* @Test public void insertOne() { User u=new User(); u.setUsername("xx");
* u.setPassword("dd"); userMapper.insertSelective(u);
* System.out.println("insert success"); }
*/
/**
* @Test public void insertMore() { int num = 20; for (int i = 0; i < num; i++)
* { userMapper.insertSelective(new User("u" + i, "p" + i)); }
* System.out.println("insert " + num + " user records"); }
*/
@Test
public void selectByPage() {
int pageNum = 1, pageSize = 10;
PageHelper.startPage(pageNum, pageSize);
List<User> dbUserList = userMapper.selectAll();
PageInfo<User> pageInfo = new PageInfo<User>(dbUserList);
for (User item : dbUserList) {
System.out.println("用户名:" + item.getUsername());
}
System.out.println("-----------page info-------");
System.out.println(pageInfo.getTotal());
}
/*
* @Test public void selectByPage() { int pageNum = 1, pageSize = 10; final
* PageInfo<User> pageInfo = PageHelper.startPage(pageNum,
* pageSize).setOrderBy("id desc") .doSelectPageInfo(() ->
* this.userMapper.selectAll());
* System.out.println("-----------page info-------");
* System.out.println(pageInfo.getTotal());
* System.out.println(pageInfo.toString()); }
*/
}