springboot项目使用Layui作为前端UI的一系列前后端交互的解决方法

背景: 因为比较喜欢Layui,因为多个项目都是从零开始就使用的layui开发的,并且开发过程中借鉴了很多其他项目(如Ruoyi、Pear Admin),因此最终选用大部分Pear Admin的项目中使用的一系列解决方案,并再次记录一些对开发非常有帮助的一些用例

  1. layui框架表格默认接收格式,以及默认的分页规则(为了方便开发,节省代码,因此统一列表返回值,为了节省代码使用 PageHelper作为分页插件)

Controller.java

java 复制代码
@SysLogAnnotation(operModul = "日志查询", operType = "查询", operDesc = "操作日志查询")
	@RequestMapping("/getSysLog")
	public ResultTable getSysLog(SysLog log) {
		PageInfo<SysLog> pageInfo = logService.getLogList(log);
		return pageTable(pageInfo.getList(), pageInfo.getTotal());
	}

serviceImpl.java

java 复制代码
public PageInfo<SysLog> getLogList(SysLog s) {
        PageHelper.startPage(s.getPage(), s.getLimit());
        List<SysLog> list = logDao.getLogList(s);
        return new PageInfo<>(list); //操作日志中专门解析了分页插件获取的数据
    }

mapper.java

java 复制代码
import java.util.List;

@Mapper   //要在java中写sql就需要这个注解, 如果使用mybatis plus的基础方法那 @Repository一个注解就搞定
@Repository
public interface LogMapper{

    @Select({"<script>select * from sys_log where 1=1  "
            + " <if test='createTime !=null and createTime != \"\" '>"
            + "    AND substring(createTime::text, 0, 11) &gt;= substring(#{createTime}, 0, 11)" //数据库中的时间10位之前即可,前台传的有空格所以是11
            + "    AND substring(createTime::text, 0, 11) &lt;= substring(#{createTime}, 14)"
            + " </if>"
            + " <if test='type !=null and type != \"\" '> AND type = #{type} </if> "
            + " <if test='result !=null and result != \"\" '> AND result like '%'|| #{result}||'%' </if> "
            + "<if test='username !=null and username != \"\" '> AND username like '%'|| #{username}||'%' </if> "
            + "order by createtime desc </script>"})
    List<SysLog> getLogList(SysLog l);  //查询操作日志

}
  1. 操作日志(获取接口返回值时,因为等保的原因公司规定需要把每一项操作的结果返回,因此这时就体现出了统一返回值的好处了)
java 复制代码
if (result instanceof ResultTable) {//分页插件返回layui 格式数据
            returnResult = operType+"了" + ((ResultTable) result).getCount()+"条数据" ;
}
复制代码
这样在操作日志切入类中根据返回值类型就能拿到实际的操作结果
相关推荐
东风破_28 分钟前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_33 分钟前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_34 分钟前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端
东风破_35 分钟前
JWT 2:HTTP 是无状态的,为什么登录成功后还要给 Token?
前端·后端
东风破_42 分钟前
JWT 4:Zustand 到底解决了什么?为什么登录状态要放进 Store?
前端·后端
IT_陈寒1 小时前
Vite动态导入差点让我秃头,原来问题出在这
前端·人工智能·后端
唐青枫2 小时前
别只把大括号当作用域:Zig Block、标签块与控制流实战
后端
TunerT_TQ3 小时前
Microsoft |Playwright CLI 源码静态审阅:从 5 个文件看浏览器自动化工具的工程边界
后端·开源·github
JavaGuide4 小时前
84.5K+ Star!这个开源编程 Agent 控制台,能统一管理 Codex、Claude Code,DeepSeek Harness 也能接入
后端·github