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

下面是详细讲解“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月19日

相关文章

  • FCKeditor2.3 For PHP 详细整理的使用参考

    FCKeditor2.3 For PHP 详细整理的使用参考 FCKeditor是一款用于Web浏览器的HTML文本编辑器。FCKeditor2.3是FCKeditor的一个旧版本,针对PHP进行了整理和优化,可以方便地在PHP网站中使用。接下来,我们将详细介绍如何使用FCKeditor2.3。 安装FCKeditor2.3 你可以从FCKeditor官网下…

    Java 2023年6月15日
    00
  • Spring定时任务轮询本地数据库实现过程解析

    让我来详细讲解一下Spring定时任务轮询本地数据库实现过程解析,需要掌握以下几个步骤: 1. 编写定时任务 首先,我们需要编写一个调度器来轮询本地数据库,可以使用Spring自带的TaskScheduler接口来实现,示例代码如下: @Component public class LocalDatabasePoller { @Autowired priva…

    Java 2023年5月20日
    00
  • JavaWeb的监听器和过滤器你了解吗

    让我来详细讲解一下JavaWeb的监听器和过滤器。 监听器 介绍 在JavaWeb中,监听器是用来监听应用程序中发生的事件的组件。事件可以是请求的到来、属性的改变以及session创建和销毁等。监听器可以在事件发生时执行预先定义好的业务逻辑,从而实现对应用程序的控制。JavaWeb中定义了多种类型的监听器,如ServletContextListener、Ht…

    Java 2023年6月15日
    00
  • Java压缩文件操作详解

    非常感谢您来到我们的网站!我很高兴能为您提供有关“Java压缩文件操作详解”的完整攻略。 一、概述 在Java编程中,处理大量的文件和文件夹是一个很常见的需求。为了方便和提高效率,许多时候我们需要对多个文件或文件夹进行压缩,将它们打包成一个文件,以减少文件的数量和占用空间。 Java提供了很多操作压缩文件的类和方法,其中最常用的是 java.util.zip…

    Java 2023年5月20日
    00
  • 深入剖析构建JSON字符串的三种方式(推荐)

    深入剖析构建JSON字符串的三种方式(推荐) 在Web开发中,构建JSON字符串是一种常见的需求。通过JSON字符串的构建,我们可以方便地将数据从服务器传递到客户端。 在这里,我为大家介绍三种构建JSON字符串的方式。这些方式覆盖了大部分在Web开发中使用JSON字符串的常见情况。 手动构建JSON字符串 这种方式是最基础的,也最容易理解的方式。我们通过字符…

    Java 2023年5月26日
    00
  • Java定时任务的三种实现方式

    下面就整理一份详细讲解Java定时任务的三种实现方式的攻略: Java定时任务的三种实现方式 在Java应用程序中,我们经常需要实现定时任务,比如定时执行一些批处理任务、定时发送消息、定时执行数据同步任务等。本文将介绍Java定时任务的三种实现方式,包括使用Java Timer类、使用Spring框架的@Scheduled注解和使用Quartz调度框架。 1…

    Java 2023年5月18日
    00
  • SpringBoot应用启动流程源码解析

    SpringBoot应用启动流程源码解析 SpringBoot是一款基于Spring框架的快速开发脚手架,具有很高的灵活性和可扩展性。在深入学习SpringBoot应用时,我们需要了解SpringBoot的启动流程。本文将进行“SpringBoot应用启动流程源码解析”的详细讲解,包括SpringBoot应用启动的主要流程、常用的启动方式和相关的代码分析。 …

    Java 2023年5月15日
    00
  • Java去除字符串中空格的方法详解

    Java去除字符串中空格的方法详解 在 Java 中,去除字符串中的空格是一个很常见的需求。本文将详细讲解如何实现去除字符串中空格的多种方法。 1. 使用replaceAll方法 replaceAll 方法是 String 类提供的方法,它可以将字符串中的一个字符或一组字符全部替换成另一个字符或一组字符。我们可以利用它来去除字符串中的空格。 下面是一个示例代…

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