Springboot整合FreeMarker的實現(xiàn)示例
一、項目搭建
1、新建模塊
2、導(dǎo)入依賴 :將不相關(guān)的依賴刪掉
<!-- <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>
3、新建軟件包,放入student實體類
package com.lv.code.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; /** * 學(xué)生表 student * @author hgh * @date 2022-01-21T13:35:43.912 */ @Data @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public class Student { /** * 學(xué)生編號 主鍵 自增 */ private Long stuId; /** * 學(xué)生名字 */ private String stuName; /** * 學(xué)生電話 */ private String stuPhone; /** * 學(xué)生班級 */ private Long stuClass; /** * 學(xué)生地址 */ 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; @Repository public interface StudentMapper extends Mapper<Student> { }
5、Springboot04Application內(nèi)引用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 # 配置數(shù)據(jù)源 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; @SpringBootTest class Springboot04ApplicationTests { @Autowired StudentMapper mapper; @Test void contextLoads() { System.out.println(mapper.selectAll()); } }
8、將切面、util包、啟動器導(dǎo)入
導(dǎo)入依賴
<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); } } }
9、新建service層
新建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); }
實現(xiàn)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(); } }
10、新建controller層
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); } }
11、運行啟動類Springboot04Application,訪問localhost:8080網(wǎng)址
二、freemarker介紹
1、新建資源文件application.yml
更改配置文件,添加freemarker配置
server: port: 8080 # 配置數(shù)據(jù)源 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默認(rèn)后綴為.ftl,當(dāng)然你也可以改成自己習(xí)慣的.html suffix: .ftl #設(shè)置響應(yīng)的內(nèi)容類型 content-type: text/html;charset=utf-8 #是否允許mvc使用freemarker enabled: true #是否開啟template caching cache: false #設(shè)定模板的加載路徑,多個以逗號分隔,默認(rèn): [ “classpath:/templates/” ] template-loader-path: classpath:/templates/ #設(shè)定Template的編碼 charset: UTF-8 # 日志打印 logging: level: com.lv.code.mapper: debug
2、模板語法
3、在資源文件中的templates文件下新建index.ftl文件
增加模塊:
然后可選中freemarker直接生成ftl文件
到此這篇關(guān)于Springboot整合FreeMarker的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Springboot整合FreeMarker 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot使用@ControllerAdvice全局異常處理
這篇文章主要介紹了SpringBoot使用@ControllerAdvice全局異常處理,異常處理是非常重要的一部分,它可以幫助我們捕獲并處理應(yīng)用程序中出現(xiàn)的異常情況,提高應(yīng)用程序的健壯性和可靠性,需要的朋友可以參考下2023-07-07java微信開發(fā)API第三步 微信獲取以及保存接口調(diào)用憑證
這篇文章主要為大家詳細(xì)介紹了java微信開發(fā)API第二步,微信獲取以及保存接口調(diào)用憑證,感興趣的小伙伴們可以參考一下2016-06-06ElasticSearch學(xué)習(xí)之Es集群Api操作示例
這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es集群Api操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01springboot對象為null的屬性在json中不顯示的解決
這篇文章主要介紹了springboot對象為null的屬性在json中不顯示的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09詳解Spring Boot 使用Spring security 集成CAS
本篇文章主要介紹了詳解Spring Boot 使用Spring security 集成CAS,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Java OpenCV利用KNN算法實現(xiàn)圖像背景移除
這篇文章主要為大家介紹了Java OpenCV利用K最鄰近(KNN,K-NearestNeighbor)分類算法實現(xiàn)圖像背景移除的示例代碼,需要的可以參考一下2022-01-01