分页项目
后端
一.创建项目
添加启动类
在resources中添加mappers文件夹
在java中添加entity、dao、service、controller包
二.配置环境
1.添加依赖
<!-- MyBatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--LomBok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <optional>true</optional>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.在application.yml中配置数据源
spring:
# 配置数据源信息
datasource:
# 配置数据源类型
type: com.zaxxer.hikari.HikariDataSource
# 配置连接数据库信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/practice?characterEncoding=utf-8&useSSL=false
username: root
password: 123456
#mybatisPlus相关配置
mybatis-plus:
type-aliases-package: demo.entity
mapper-locations: classpath:mappers/*.xml
configuration:
# 配置MyBatis日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.在启动类Demo.java中扫描dao
package demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("demo.dao")
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
}
三.实体层
实体类这一层,与数据库中的属性值基本保持一致。有的开发写成pojo,有的写成model,也有domain,也有dto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String userName;
private String passwd;
private String createDate;
}
四.DAO层(mapper层)
DAO层叫数据访问层,全称为data access object,也叫mapper层 。某个DAO一定是和数据库的某一张表一一对应的,其中封装了CRUD(增加Create、检索Retrieve、更新Update和删除Delete)基本操作,DAO只做原子操作。无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。
1.创建UserMapper.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="demo.dao.UserMapper">
<sql id="baseSql">
id,user_name,passwd,create_date
</sql>
<resultMap id="userResult" type="User">
<result column="id" property="id"/>
<result column="user_name" property="userName"/>
<result column="passwd" property="passwd"/>
<result column="create_date" property="createDate"/>
</resultMap>
<select id="selectAll" resultMap="userResult">
select <include refid="baseSql"/> from t_user
</select>
<select id="selectPage" resultMap="userResult">
select <include refid="baseSql"/> from t_user
limit #{pageIndex},#{pageSize}
</select>
</mapper>
2.创建UserMapper接口
package demo.dao;
import demo.entity.User;
import java.util.List;
public interface UserMapper{
public List<User> selectAll();
public List<User> selectPage(int pageIndex,int pageSize);
}
五.service层
Service层叫业务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。管理具体的功能的。
service包含了serviceImpl(service接口的实现类) 是提供给controller 使用的,针对于某些业务将 dao 的对于某些表的crud进行组合,也就是说间接的和数据库打交道。
1.service接口
public interface IUserService {
public List<User> queryUserList();
public Pager queryPage(int pageIndex, int pageSize);
}
2.service实现类
@Service
public class UserServiceImpl implements IUserService {
@Resource
private UserMapper mapper;
@Override
public List<User> queryUserList() {
return mapper.selectAll();
}
@Override
public Pager queryPage(int pageIndex, int pageSize) {
List<User> list = mapper.selectPage((pageIndex-1)*pageSize,(pageSize));
Integer count = mapper.selectCount();
return new Pager(list,count);
}
}
六.Controller层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。管理业务(Service)调度和管理跳转的
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private IUserService userService;
@RequestMapping("/list")
@CrossOrigin(origins = "*")
public List<User> findUserList() {
return userService.queryUserList();
}
@RequestMapping("/page")
@CrossOrigin(origins = "*")
public Pager findUserListByPage(Integer index, Integer size) {
return userService.queryPage(index, size);
}
}