package com.lv.code.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors;@Data@NoArgsConstructor@AllArgsConstructor@Accessors(chain = true)public class Student { private Long stuId; private String stuName; private String stuPhone; private Long stuClass; private String stuAddress;}
4、新建StudentMapper接口package com.lv.code.mapper;import com.lv.code.pojo.Student;import org.springframework.stereotype.Repository;import tk.mybatis.mapper.common.Mapper;@Repositorypublic interface StudentMapper extends Mapper
package com.lv.code;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication@MapperScan("com.lv.code.mapper")public class Springboot04Application { public static void main(String[] args) { SpringApplication.run(Springboot04Application.class, args); }}
6、application.yml文件配置server: port: 8080# 配置数据源spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true# 日志打印logging: level: com.lv.code.mapper: debug
7、测试Springboot04ApplicationTests:
package com.lv.code;import com.lv.code.mapper.StudentMapper;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass Springboot04ApplicationTests { @Autowired StudentMapper mapper; @Test void contextLoads() { System.out.println(mapper.selectAll()); }}
8、将切面、util包、启动器导入导入依赖
切面PageAspect:
package com.lv.code.aspect;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.lv.code.util.PageBean;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;@Component@Aspect@Slf4jpublic class PageAspect { @Around(value = "execution(* *..*Service.*Pager(..))") public Object invoke(ProceedingJoinPoint point) throws Throwable { PageBean pageBean = null; for (Object e : point.getArgs()) { if (e instanceof PageBean) { pageBean = (PageBean) e; break; } } if (pageBean != null && pageBean.isPagination()) { PageHelper.startPage(pageBean.getPage(), pageBean.getRows()); } Object obj = point.proceed(point.getArgs()); if (obj != null) { if (obj instanceof Page) { Page page = (Page) obj; PageInfo pageInfo = new PageInfo(page); pageBean.setTotal(new Long(pageInfo.getTotal()).intValue()); return pageInfo.getList(); } } return obj; }}
util包中的PageBean类
package com.lv.code.util;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import javax.servlet.http.HttpServletRequest;import java.util.Map;@Data@NoArgsConstructor@AllArgsConstructorpublic class PageBean { private int total; private int page = 1; private int rows = 5; private boolean pagination = true; private String url; private Map
新建StudentService接口:
package com.lv.code.service;import com.lv.code.pojo.Student;import com.lv.code.util.PageBean;import java.util.List;public interface StudentService { List
实现StudentService接口:StudentServiceImpl
package com.lv.code.service;import com.lv.code.mapper.StudentMapper;import com.lv.code.pojo.Student;import com.lv.code.util.PageBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class StudentServiceImpl implements StudentService { @Autowired private StudentMapper mapper; @Override public List
StudentController类:
package com.lv.code.controller;import com.github.pagehelper.PageRowBounds;import com.lv.code.service.StudentService;import com.lv.code.util.PageBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestControllerpublic class StudentController { @Autowired private StudentService service; @GetMapping public Object find(HttpServletRequest request){ PageBean pageBean=new PageBean(); pageBean.setRequest(request); return service.findPager(pageBean); }}
11、运行启动类Springboot04Application,访问localhost:8080网址 二、freemarker介绍 1、新建资源文件application.yml更改配置文件,添加freemarker配置
server: port: 8080# 配置数据源spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true freemarker: #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项 allow-request-override: false #req访问request request-context-attribute: req #后缀名freemarker默认后缀为.ftl,当然你也可以改成自己习惯的.html suffix: .ftl #设置响应的内容类型 content-type: text/html;charset=utf-8 #是否允许mvc使用freemarker enabled: true #是否开启template caching cache: false #设定模板的加载路径,多个以逗号分隔,默认: [ “classpath:/templates/” ] template-loader-path: classpath:/templates/ #设定Template的编码 charset: UTF-8# 日志打印logging: level: com.lv.code.mapper: debug
2、模板语法 3、在资源文件中的templates文件下新建index.ftl文件增加模块:
然后可选中freemarker直接生成ftl文件