Layui之CRUD(增删改查)

目录:

1.后台增删改查方法

2.R工具类的使用

3.前端代码的实现


为什么要用增删改查:

Layui是一个轻量级的前端UI库,被广泛应用于Web开发中。在开发过程中,经常需要对数据进行增删改查操作,这是因为数据是应用程序的核心内容,而增删改查是对数据进行基本的操作。

以下是几个原因解释为什么在Layui中使用增删改查操作:

  1. 数据管理和交互:对于大部分Web应用来说,用户需要与数据进行交互,包括增加新数据、删除不需要的数据、修改已有的数据以及查询获取所需的数据。增删改查操作是直接操作数据的方式,能够满足用户的需求。

  2. 数据展示与操作:Web应用通常需要以表格、列表等形式展示数据,而增删改查操作则是管理和操作这些数据的重要手段。通过增删改查操作,用户可以方便地管理和编辑数据,从而提升用户体验和操作效率。

  3. 安全性和数据完整性:通过对数据的增删改查操作,可以增强数据的安全性和完整性。例如,可以限制用户对数据的访问和操作权限,避免未经授权的人员对数据进行操作。

  4. 数据持久化:在Web开发中,数据通常需要永久保存并持久化到数据库,以便长期使用和管理。增删改查操作是对数据库中数据进行操作的方式,通过这些操作可以实现数据的持久化和管理。

  5. 总之,使用增删改查操作可以方便地管理、操作和展示数据,从而提供良好的用户体验和数据管理能力。Layui作为一个前端UI库,提供了方便易用的UI组件和交互方式,使得开发人员可以更快地实现增删改查功能。

1.后台增删改查方法:

查询语句:

SELECT u.*,
(CASE 
	WHEN u.rid='1' THEN
		'管理员'
		WHEN u.rid='2' THEN
		'发起者'
		WHEN u.rid='3' THEN
		'审批者'
		WHEN u.rid='4' THEN
		'参与者'
		WHEN u.rid='5' THEN
		'会议是管理员'
	ELSE
		'其他'
END 
)rname
FROM  t_oa_user u

dao方法:

package com.zking.dao;

import java.util.List;
import java.util.Map;

import com.zking.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;

public class UserDao extends BaseDao<User> {

	public List<User> list(User user, PageBean pageBean) throws Exception {
         String sql="select * from t_oa_user where 1=1";
		return super.executeQuery(sql, User.class, pageBean);
		
	}
	
	public User login(User user) throws Exception {
        String sql="select * from t_oa_user where loginName='"+user.getLoginName()+"'  and pwd ='"+user.getPwd()+"'  ";
		 List<User> l = super.executeQuery(sql, User.class, null);
		 if(l!=null && l.size()==1) {
			 return l.get(0);
		 }
		return user;
		
	}
	/**
	 * List<User>与List<Map>都是转成一样的json数组
	 * 插叙吧结果溴代rname
	 * @param user
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> userRole(User user, PageBean pageBean) throws Exception {
        String sql="SELECT u.*,\r\n" + 
        		"(CASE \r\n" + 
        		"	WHEN u.rid='1' THEN\r\n" + 
        		"		'管理员'\r\n" + 
        		"		WHEN u.rid='2' THEN\r\n" + 
        		"		'发起者'\r\n" + 
        		"		WHEN u.rid='3' THEN\r\n" + 
        		"		'审批者'\r\n" + 
        		"		WHEN u.rid='4' THEN\r\n" + 
        		"		'参与者'\r\n" + 
        		"		WHEN u.rid='5' THEN\r\n" + 
        		"		'会议是管理员'\r\n" + 
        		"	ELSE\r\n" + 
        		"		'其他'\r\n" + 
        		"END \r\n" + 
        		")rname\r\n" + 
        		"FROM  t_oa_user u where 1=1";
        String name = user.getName();
        if(StringUtils.isNotBlank(name)) {
        	sql += " and name like '%"+name+"%'";
        }
		return super.executeQuery(sql, pageBean);
		
	}
	public int add(User user) throws Exception {
		String sql="insert into t_oa_user(name,loginName,pwd) value(?,?,?)";
		return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
		
	}
	public int del(User user) throws Exception {
		String sql="delete from t_oa_uesr where id=?";
		return super.executeUpdate(sql, user, new String[] {"id"});
		
	}
	public int edit(User user) throws Exception {
		String sql="update  t_oa_uesr set name=?,loginName=?,pwd=? where id=?";
		return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd","id"});
	}
	
	
//	public static void main(String[] args) throws Exception {
//		User user = new User("kk","123","123123");
//		user.setName("朱");
//         int add = new UserDao().add(user);
//			System.out.println(add);
//	}
	
	
	
}

JUnit:

package com.zking.dao;

import static org.junit.Assert.*;

import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.zking.entity.User;

public class UserDaoTest {
	private UserDao userDao =new UserDao();

	@Test
	public void testUserRole() throws Exception {
		User user = new User();
		user.setName("朱");
        List<Map<String,Object>> userRole = userDao.userRole(user, null);
		for (Map<String,Object> u : userRole) {
			System.out.println(u);
		}
	}

	@Test
	public void testAdd() throws Exception {
		User user =new User(88, "朱俊良", "zjl", "12345", 4);
		userDao.add(user);
	}

	@Test
	public void testDel() throws Exception {
		User user =new User(88, "朱俊良", "zjl", "12345", 4);
		userDao.del(user);
	}

	@Test
	public void testEdit() throws Exception {
		User user =new User(16, "小飞机来了", "zjl", "1234567", 4);
		userDao.edit(user);
	}

}

输出结果:

 

2.R工具类的使用:

后台查询:以前的写法:userAction(弊端:代码比较多):

package com.zking.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.dao.UserDao;
import com.zking.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.PageBean;
import com.zking.util.ResponseUtil;

public class UserAction extends ActionSupport implements ModelDriver<User> {
    
	private User user=new User();
	private UserDao userDao=new UserDao();
	
	public void login(HttpServletRequest req, HttpServletResponse resp) {
		try {
			User u = userDao.login(user);
			ResponseUtil.writeJson(resp, u);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	public void userRole(HttpServletRequest req, HttpServletResponse resp) {
		try {
			PageBean pageBean=new PageBean();
			pageBean.setRequest(req);
			 List<Map<String,Object>> userRole = userDao.userRole(user, pageBean);
			 Map<String, Object> map=new HashMap<String, Object>();
			 map.put("code", 0);
			 map.put("msg", "查询成功");
			 map.put("count", pageBean.getTotal());
			 map.put("date", userRole);
			ResponseUtil.writeJson(resp, map);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	@Override
	public User getModel() {
		return user;
	}

}

输出结果:

 

后台查询:现在的方法:工具类(代码较少,比较容易动懂):

 

package com.zking.util;

import java.util.HashMap;

public class R extends HashMap{
	public R data(String key, Object value) {
		this.put(key, value);
		return this;
	}
	
	public static R ok(int code, String msg) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.data("success", false).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R ok(int code, String msg,Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("data", data);
		return r;
	}
	
	public static R ok(int code, String msg, long count, Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
		return r;
	}
}

输出结果:

 增删改查方法:

package com.zking.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.dao.UserDao;
import com.zking.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.PageBean;
import com.zking.util.R;
import com.zking.util.ResponseUtil;

public class UserAction extends ActionSupport implements ModelDriver<User> {
    
	private User user=new User();
	private UserDao userDao=new UserDao();
	
	public void login(HttpServletRequest req, HttpServletResponse resp) {
		try {
			User u = userDao.login(user);
			ResponseUtil.writeJson(resp, u);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	public void userRole(HttpServletRequest req, HttpServletResponse resp) {
		try {
			PageBean pageBean=new PageBean();
			pageBean.setRequest(req);
			 List<Map<String,Object>> userRole = userDao.userRole(user, pageBean);
//			 Map<String, Object> map=new HashMap<String, Object>();
//			 map.put("code", 0);
//			 map.put("msg", "查询成功");
//			 map.put("count", pageBean.getTotal());
//			 map.put("date", userRole);
			ResponseUtil.writeJson(resp, R.ok(0, "查询成功", pageBean.getTotal(), userRole));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void add(HttpServletRequest req, HttpServletResponse resp) {
		try {
			  int add = userDao.add(user );
			ResponseUtil.writeJson(resp, R.ok(0, "新增成功"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void del(HttpServletRequest req, HttpServletResponse resp) {
		try {
			  int del = userDao.del(user );
			ResponseUtil.writeJson(resp, R.ok(0, "删除成功"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void edit(HttpServletRequest req, HttpServletResponse resp) {
		try {
			  int edit = userDao.edit(user );
			ResponseUtil.writeJson(resp, R.ok(0, "修改成功"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	
	@Override
	public User getModel() {
		return user;
	}

}

 

3.前端代码的实现:

编写UserManage界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="/static/js/system/userManage.js"></script>
<title>用户管理</title>
</head>
<body>
	<!-- 搜索栏 -->
	<div class="layui-form-item">
	  <div class="layui-inline">
	    <label class="layui-form-label">用户名:</label>
	    <div class="layui-input-inline">
	      <input type="text" id="name" placeholder="请输入用户名" autocomplete="off" class="layui-input">
	    </div>
	  </div>
	  
	  <div class="layui-inline">
	    <div class="layui-input-inline">
	      <button id="btn_search" type="button" class="layui-btn layui-btn-normal">
	      	<i class="layui-icon layui-icon-search"></i>
	      	查询
	      </button>
	      <button id="btn_add" type="button" class="layui-btn">新增</button>
	    </div>
	  </div>
	  
	</div>
	<!-- 数据表格及分页 -->
	<table class="layui-hide" id="test" lay-filter="test"></table>
 
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
  </div>
</script>
 
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</body>
</html>

实现所有方法:

 

let layer,$,table;
var  row;
layui.use(['jquery', 'layer', 'table'], function(){
	layer = layui.layer
	,$ = layui.jquery
	,table = layui.table;
	//初始化数据表格
	initTable();
	//绑定查询按钮的点击事件
	$('#btn_search').click(function(){
		query();
	});
	//绑定新增按钮的点击事件
	$('#btn_add').click(function(){
		row=null;
		edit('编辑');
	});
	
	
});
 
//打开增加界面
function edit(title){
    layer.open({
       type: 2,                    //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
       title:title,
       area: ['660px', '340px'],   //宽高
       skin: 'layui-layer-rim',    //样式类名
       content: '/jsp/system/userEdit.jsp', //书本编辑页面
       btn:['保存','关闭'],
       yes: function(index, layero){
    	   //调用子页面中提供的getData方法,快速获取子页面的form表单数据
           let data= $(layero).find("iframe")[0].contentWindow.getData();
           console.log(data);
           //判断title标题
           let methodName="add";
           if(title=="编辑")
        	   methodName="edit";
           $.post('/user.action?methodName='+methodName,
        		   data,function(rs){
        	   if(rs.success){
        		   //关闭对话框
        		   layer.closeAll();
        		   //调用查询方法刷新数据
        		   query();
        	   }else{
        		   layer.msg(rs.msg,function(){});
        	   }
           },'json');
       },
       btn2: function(index, layero){
    	   layer.closeAll();
       }
    });
 }
 
//1.初始化数据表格
function initTable(){
	    	 table.render({
	    		    elem: '#test'
	    		    ,url:'user.action?methodName=userRole'
	    		    ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
	    		    ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
	    		      title: '提示'
	    		      ,layEvent: 'LAYTABLE_TIPS'
	    		      ,icon: 'layui-icon-tips'
	    		    }]
	    		    ,title: '用户数据表'
	    		    ,cols: [[
	    		      {type: 'checkbox', fixed: 'left'}
	    		      ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
	    		      ,{field:'loginName', title:'账户名', width:120, edit: 'text'}
	    		      ,{field:'name', title:'用户名', width:150, edit: 'text', templet: function(res){
	    		        return '<em>'+ res.name +'</em>'
	    		      }}
	    		      ,{field:'pwd', title:'密码', width:80, edit: 'text', sort: true}
	    		      ,{field:'rname', title:'角色名字', width:100}
	    		      ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
	    		    ]]
	    		    ,page: true
	    		  });
 
	    		//在页面中的<table>中必须配置lay-filter="tb_goods"属性才能触发属性!!!
	    		table.on('tool(tb)', function (obj) {
	    			row = obj.data;
	    			if (obj.event == "edit") {
	    				open("编辑");
	    			}else if(obj.event == "del"){
	    				layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
	    				  $.post('/user.action',{
	    					  'methodName':'del',
	    					  'id':row.id
	    				  },function(rs){
	    					  if(rs.success){
	    		        		   //调用查询方法刷新数据
	    		        		   query();
	    		        	   }else{
	    		        		   layer.msg(rs.msg,function(){});
	    		        	   }
	    				  },'json');
	    				  layer.close(index);
	    				});
	    			}else{
 
	    			}
	    		}) 
	    	 
	    	 
	    	 
	    	 
}
//查询   
function  query() {
		table.reload('test',{
			where :{
			name:$("name").val()	
			}
		,request:{
			pageName:'page'
				,limitName:'rows'
		}
		});
     } 

 增加:

删除:

 

修改:

 

查询:

 

 

     

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是有关使用Spring Boot实现CRUD操作的增加、删除、修改和查询的一些基本步骤: 1. 配置项目依赖 在您的Maven或Gradle构建文件中添加Spring Boot和相关的数据库依赖。例如,如果您想要使用MySQL数据库,则需要添加以下依赖项: ```xml <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MySQL database driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据库连接 在application.properties或application.yml文件中添加数据库连接信息,如下所示: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase spring.datasource.username=yourusername spring.datasource.password=yourpassword spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update ``` 3. 创建实体类 创建一个实体类来表示您要持久化的数据。例如,如果您要创建一个用户对象,则可以编写以下代码: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "email") private String email; // getter and setter methods } ``` 4. 创建Repository接口 创建一个Repository接口来定义CRUD操作。例如,如果您要操作用户对象,则可以编写以下代码: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 5. 创建服务类 创建一个服务类来实现您的业务逻辑。例如,如果您要实现用户管理功能,则可以编写以下代码: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getAllUsers() { return userRepository.findAll(); } public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } public User addUser(User user) { return userRepository.save(user); } public User updateUser(User user) { return userRepository.save(user); } public void deleteUserById(Long id) { userRepository.deleteById(id); } } ``` 6. 创建控制器类 创建一个控制器类来处理HTTP请求。例如,如果您要处理用户对象的HTTP请求,则可以编写以下代码: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping("") public List<User> getAllUsers() { return userService.getAllUsers(); } @GetMapping("/{id}") public User getUserById(@PathVariable("id") Long id) { return userService.getUserById(id); } @PostMapping("") public User addUser(@RequestBody User user) { return userService.addUser(user); } @PutMapping("") public User updateUser(@RequestBody User user) { return userService.updateUser(user); } @DeleteMapping("/{id}") public void好的,我可以用中文回答您关于 Spring Boot CRUD 的问题。 Spring Boot 是一个基于 Spring 框架的快速开发框架,可以帮助开发者快速构建 Web 应用程序。CRUD 则是指对于一个数据实体,可以进行增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)的操作。 在 Spring Boot 中实现 CRUD 操作,通常需要以下步骤: 1. 定义数据实体类:首先需要定义一个数据实体类,表示要进行 CRUD 操作的数据对象。该类需要使用 JPA 注解来定义实体和属性,并且需要定义一个主键属性。 2. 定义数据访问层接口:接下来需要定义一个数据访问层接口,用于定义数据操作的方法,包括增加、查询、更新和删除等操作。 3. 实现数据访问层接口:在实现数据访问层接口时,需要使用 Spring Data JPA 提供的 Repository 接口,该接口提供了许多 CRUD 操作的默认实现,可以大大减少我们的代码量。 4. 定义业务逻辑层接口和实现类:在定义业务逻辑层接口和实现类时,可以将数据访问层接口作为一个成员变量注入进来,并在业务逻辑层方法中调用数据访问层接口中的方法,来完成具体的数据操作。 5. 定义控制器类:最后需要定义一个控制器类,用于接收 HTTP 请求,并将请求参数传递给业务逻辑层进行处理,然后返回相应的结果给客户端。 以上就是实现 Spring Boot CRUD 的基本步骤,具体实现过程可以参考 Spring Boot 官方文档和相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值