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年4月18日

相关文章

  • java中几种常见的排序算法总结

    对于“java中几种常见的排序算法总结”的攻略,我们可以通过以下步骤来进行详细讲解: 一、排序算法简介 在介绍具体的排序算法之前,我们需要了解一些基础概念。排序算法是指对一个数据集合进行排序的过程,其中涉及到的一些重要概念包括: 稳定性:如果存在相同的元素,排序前和排序后这些元素的相对位置是否发生了改变。稳定的排序算法会保留相同元素之间的顺序关系,不稳定的排…

    Java 2023年5月19日
    00
  • java编程之单元测试(Junit)实例分析(附实例源码)

    这里是关于“java编程之单元测试(Junit)实例分析(附实例源码)”的完整攻略。 1. 什么是单元测试? 单元测试指的是对程序中的最小代码单元进行测试,主要用来确保每一个单元都能够正常的工作。通过单元测试,我们可以确保程序的模块和功能是可靠的,同时也能够减少程序的bug数量。 2. Junit是什么? Junit是Java编程中最流行的单元测试框架之一。…

    Java 2023年5月23日
    00
  • Java第三方库JodaTime的具体使用

    Java第三方库JodaTime的具体使用攻略 什么是JodaTime JodaTime是一个Java开发的第三方日期和时间处理库,它可以处理从公元前4713年到公元后9999年的日期和时间。该库被设计用于替代Java标准库中日期和时间类的不足,提供了更多的功能和灵活性。 JodaTime的应用场景 应用程序需要在不同的时区之间进行转换的场景; 应用程序需要…

    Java 2023年5月20日
    00
  • java一个数据整理的方法代码实例

    针对“java一个数据整理的方法代码实例”的完整攻略,我将详细讲解以下几个方面: 1.目标 首先,我们需要明确准备实现什么样的数据整理方法。例如,一个实际需求是我们需要从一份数据集中,提取出某个字段所对应的数据,并对其进行统计分析。那么,我们的目标就是实现一个函数,接收这份数据集和指定的字段名,返回经过处理后的结果。 2.实现思路 在明确目标后,我们需要考虑…

    Java 2023年5月23日
    00
  • JAVA十大排序算法之计数排序详解

    JAVA十大排序算法之计数排序详解 计数排序概述 计数排序是一种非比较排序算法,它的时间复杂度为O(n+k),其中k是整数的范围。和桶排序一样,计数排序假设输入的数组中元素是平均分布的,但它不适用于元素范围过大的情况。 计数排序算法的思想:对于给定的一组数据,统计出小于等于这组数据中每个数的个数,利用这个统计信息,直接将每个元素放到它在输出数组中的位置上,从…

    Java 2023年5月19日
    00
  • java spring mvc处理器映射器介绍

    Java Spring MVC是一个非常流行的入门级Java Web框架,其最大的特点就是提供了高度的可配置性和灵活性,使得开发者可以很容易地使用IoC和AOP等高级技术。处理器映射器是Spring MVC的一部分,它充当了客户端请求和处理器的“中间人”,负责将请求映射到合适的处理器方法上。 以下是详细的“Java Spring MVC处理器映射器介绍”的攻…

    Java 2023年5月16日
    00
  • Struts2 OGNL调用公共静态方法详细介绍

    Struts2 OGNL调用公共静态方法详细介绍 在 Struts2 框架中,我们可以使用 OGNL(Object-Graph Navigation Language)表达式来操作对象的属性,其中 OGNL 还提供了一些常见的方式来调用对象的方法(如:size()、charAt()等等)。但有时我们需要调用位于公共静态类中的方法,那么该如何实现呢?本文将提供…

    Java 2023年6月15日
    00
  • Mysql json类型字段Java+Mybatis数据字典功能的实践方式

    Mysql json类型字段Java+Mybatis数据字典功能的实践方式概述 Mysql支持json类型数据,在应用程序开发中,经常需要将json类型数据存储到数据库中。考虑到数据字典的实现方式,可以将字典数据以json的方式存储到Mysql数据库表中,Java+Mybatis数据字典功能是通过将json类型的数据解析出来,然后在应用程序中使用这些数据。 …

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