layui的数据表格+springmvc实现搜索功能的例子

yizhihongxing

下面是详细讲解“layui的数据表格+springmvc实现搜索功能的例子”的完整攻略:

一、前置条件

  1. 确定使用的IDE是IntelliJ IDEA;
  2. 确保已经创建了一个Spring MVC的web工程;
  3. 确保已经配置好了Layui相关的静态资源。

二、添加依赖

添加spring-data-jpa、MySQL JDBC驱动、Spring Web MVC等依赖。

<!-- Spring Web MVC -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>

<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>${spring-data.version}</version>
</dependency>

<!-- MySQL JDBC Driver -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql-connector.version}</version>
</dependency>

三、创建数据表格

使用Layui实现一个数据表格,并添加搜索功能。

<table id="userTable" lay-filter="userTable"></table>
<script>
    layui.use('table', function(){
        var table = layui.table;

        table.render({
            elem: '#userTable',
            url: '/user/query',
            cols: [[
              {field:'id', title: 'ID', width:100},
              {field:'username', title: '用户名', width:100},
              {field:'email', title: '邮箱', width:200},
              {field:'phone', title: '手机', width:120},
              {field:'createTime', title: '创建时间', width:200}
            ]],
            page: true,
            limits: [10, 20, 30],
            limit: 10,
            ajaxParams: {
                // ajax参数,可用于搜索等操作
            },
            parseData: function(res){ // res为服务端返回的数据
                return {
                    "code": res.code, // 解析接口状态
                    "msg": res.msg, // 解析提示文本
                    "count": res.data.total, // 解析数据长度
                    "data": res.data.records // 解析数据列表
                };
            }
        });

        // 搜索按钮点击事件
        $('#searchBtn').click(function(){
            var key = $('#searchInput').val();
            table.reload('userTable',{
                where:{
                    'key': key
                }
            });
        });
    });
</script>

四、添加Controller

创建UserController,添加查询用户数据的方法。

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/query")
    @ResponseBody
    public Result query(UserSearchCondition condition) {
        Page<User> page = userService.findByCondition(condition);
        return Result.success(page);
    }
}

// UserSearchCondition.java
@Data
public class UserSearchCondition {

    private Integer page = 1;

    private Integer limit = 10;

    private String key;

    public Pageable getPageable() {
        return PageRequest.of(page - 1, limit);
    }
}

// UserService.java
public interface UserService {

    Page<User> findByCondition(UserSearchCondition condition);
}

// UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository repository;

    @Override
    public Page<User> findByCondition(UserSearchCondition condition) {
        UserSpecification specification = new UserSpecification(condition);
        return repository.findAll(specification, condition.getPageable());
    }
}

// UserSpecification.java
public class UserSpecification implements Specification<User> {

    private UserSearchCondition condition;

    public UserSpecification(UserSearchCondition condition) {
        this.condition = condition;
    }

    @Override
    public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        List<Predicate> predicates = new ArrayList<>();
        if (StringUtils.isNotEmpty(condition.getKey())) {
            String pattern = "%" + condition.getKey() + "%";
            Predicate usernameLike = cb.like(root.get("username"), pattern);
            Predicate emailLike = cb.like(root.get("email"), pattern);
            Predicate phoneLike = cb.like(root.get("phone"), pattern);
            predicates.add(cb.or(usernameLike, emailLike, phoneLike));
        }
        return cb.and(predicates.toArray(new Predicate[0]));
    }
}

五、编写SQL脚本

创建user表,并向表中添加一些测试数据。例如:

CREATE TABLE user (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(32) NOT NULL COMMENT '用户名',
  email varchar(64) NOT NULL COMMENT '邮箱',
  phone varchar(16) NOT NULL COMMENT '手机',
  password varchar(64) NOT NULL COMMENT '密码',
  create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

INSERT INTO user (id, username, email, phone, password, create_time, update_time)
VALUES
    (1, 'admin', 'admin@qq.com', '13800138000', '123456', '2021-09-15 16:14:12', '2021-09-15 16:14:12'),
    (2, 'tom', 'tom@qq.com', '13900139000', '123456', '2021-09-15 16:14:36', '2021-09-15 16:14:36'),
    (3, 'jack', 'jack@qq.com', '13600136000', '123456', '2021-09-15 16:14:49', '2021-09-15 16:14:49');

六、测试

启动Web应用程序,并在浏览器中访问http://localhost:8080/user/query,将会返回所有用户的数据列表。此时,我们可以在搜索框中输入关键字,点击搜索按钮,即可过滤数据,显示符合搜索条件的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:layui的数据表格+springmvc实现搜索功能的例子 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年5月26日

相关文章

  • java — IO流

    简介 键盘、内存、硬盘、外接设备等与电脑进行交互的数据这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。 分类 根据数据的流向分为:输…

    Java 2023年4月18日
    00
  • springboot实用配置详细图文教程

    我来为你详细讲解“springboot实用配置详细图文教程”的完整攻略。 1. 准备工作 首先,我们需要安装以下几个软件:- JDK 1.8+- Maven- IDE(如IntelliJ IDEA) 2. 创建Spring Boot项目 现在,我们可以开始创建一个Spring Boot项目了。在IDE中,选择新建一个Maven项目,选择Spring Init…

    Java 2023年5月31日
    00
  • Java常用的八种排序算法与代码实现

    Java常用的八种排序算法与代码实现 在Java中,排序算法是非常重要的基础知识,掌握常用排序算法不仅可以提高程序员的知识水平,也可以在以后的工作中提高效率。本文将详细讲解八种Java常用排序算法的原理和代码实现。 冒泡排序(Bubble Sort) 冒泡排序也是常用的排序算法之一,其基本思想是通过比较两个相邻的元素,如果他们的顺序不对则交换他们直至序列变得…

    Java 2023年5月18日
    00
  • Java使用IntelliJ IDEA连接MySQL的详细教程

    下面我会给出Java使用IntelliJ IDEA连接MySQL的详细教程: 1. 下载安装MySQL 首先你需要下载并安装MySQL数据库,可以到官网上下载最新的稳版本,安装过程中需要自己设置root账户的密码。 2. 下载安装IntelliJ IDEA 接下来你需要下载并安装IntelliJ IDEA,可以到官网上下载最新的Community版本,社区版…

    Java 2023年5月20日
    00
  • 【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存

    不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助。 一、分布式缓存介绍 主要作用就是将用户应用程序执行时,所需的外部文件资源下载缓存到各个节点。YARN 分布式缓存工作流程如下: 客户端将应用程序所需的文件资源 (外部字典、JAR 包、二进制文件) 提交到 HDFS 上。 客户端将应用程序提交到 R…

    Java 2023年5月8日
    00
  • springMVC+jersey实现跨服务器文件上传

    下面为您详细讲解如何使用SpringMVC和Jersey实现跨服务器文件上传的完整攻略。 1. 环境准备 要使用SpringMVC和Jersey实现跨服务器文件上传需要先进行环境准备,包括以下两个方面: 1.1. 服务器环境 首先搭建需要搭建两个服务器,一个是文件上传的服务器,另一个是文件存储的服务器。其中文件上传服务器需要安装Tomcat和Jersey,文…

    Java 2023年6月15日
    00
  • SpringBoot下Mybatis的缓存的实现步骤

    SpringBoot下Mybatis的缓存实现步骤如下所述: 1. 配置缓存 在 Spring Boot 中,使用 Mybatis 需要先在 pom.xml 文件中引入相关的依赖和插件,然后在 application.yml 或 application.properties 文件中配置Mybatis即可。 在配置的时候,需要在 mybatis-config.…

    Java 2023年5月20日
    00
  • java对象序列化与反序列化的默认格式和json格式使用示例

    Java对象序列化和反序列化是Java中常用的数据交换方式,其中序列化是将Java对象转换为字节流,可以储存到文件或网络流中,反序列化则是将字节流转换为Java对象。在Java中,序列化和反序列化的默认格式是二进制格式,而JSON格式则更加通用并且易于阅读。 默认格式的使用示例 序列化 当我们需要将一个Java对象进行序列化时,我们可以使用 ObjectOu…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部