<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
<!-- <dependency>--> <!-- <groupId>org.mybatis.spring.boot</groupId>--> <!-- <artifactId>mybatis-spring-boot-starter</artifactId>--> <!-- <version>2.1.4</version>--> <!-- </dependency>--> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version> <scope>compile</scope> </dependency>
package com.lv.code.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; /** * 學生表 student * @author hgh * @date 2022-01-21T13:35:43.912 */ @Data @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public class Student { /** * 學生編號 主鍵 自增 */ private Long stuId; /** * 學生名字 */ private String stuName; /** * 學生電話 */ private String stuPhone; /** * 學生班級 */ private Long stuClass; /** * 學生地址 */ private String stuAddress; }
package com.lv.code.mapper; import com.lv.code.pojo.Student; import org.springframework.stereotype.Repository; import tk.mybatis.mapper.common.Mapper; @Repository public interface StudentMapper extends Mapper<Student> { }
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); } }
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
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; @SpringBootTest class Springboot04ApplicationTests { @Autowired StudentMapper mapper; @Test void contextLoads() { System.out.println(mapper.selectAll()); } }
匯入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency>
切面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; /** * @author yk */ @Component @Aspect @Slf4j public 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; /** * @author 銀嚳 */ @Data @NoArgsConstructor @AllArgsConstructor public class PageBean { private int total; private int page = 1; private int rows = 5; private boolean pagination = true; private String url; private Map<String, String[]> ms; public void setMs(Map<String, String[]> ms) { this.ms = ms; } public int calcStartIndex() { return (page - 1) * rows; } public int calcMaxPage() { return total % rows == 0 ? total / rows : total / rows + 1; } public int nextPage() { return Math.min(page + 1, calcMaxPage()); } public int prevPage() { return Math.max(page - 1, 1); } public void setRequest(HttpServletRequest req) { setUrl(req.getRequestURL().toString()); setMs(req.getParameterMap()); String page = req.getParameter("page"); if (page == null) { setPage(1); } else { setPage(Integer.parseInt(page)); } String rows = req.getParameter("rows"); if (rows == null) { setRows(5); } else { setRows(Integer.parseInt(rows)); } String pagination = req.getParameter("pagination"); if ("false".equals(pagination)) { setPagination(false); } } }
新建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<Student> findPager(PageBean pageBean); }
實現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; @Service public class StudentServiceImpl implements StudentService { @Autowired private StudentMapper mapper; @Override public List<Student> findPager(PageBean pageBean) { return mapper.selectAll(); } }
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; @RestController public class StudentController { @Autowired private StudentService service; @GetMapping public Object find(HttpServletRequest request){ PageBean pageBean=new PageBean(); pageBean.setRequest(request); return service.findPager(pageBean); } }
更改組態檔,新增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
增加模組:
然後可選中freemarker直接生成ftl檔案
到此這篇關於Springboot整合FreeMarker的實現範例的文章就介紹到這了,更多相關Springboot整合FreeMarker 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45