• 基于springboot用户信息增删改查源码【附源码】


    基于springboot+mybatis+mysql+layui+html用户信息增删改查源码

    本项目用于学习使用。

    下载地址: 文件分享

    点我下载 

    开发工具:

    idea   mysql   jdk1.8   navcat

    开发技术:

    后端:springboot+mybatis

    前端:ayui+html

     

     

    1. package com.zyyt.springboot.controller;
    2. import com.github.pagehelper.Page;
    3. import com.github.pagehelper.PageHelper;
    4. import com.zyyt.springboot.bean.ApiResult;
    5. import com.zyyt.springboot.bean.Student;
    6. import com.zyyt.springboot.service.StudentService;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.ui.ModelMap;
    9. import org.springframework.validation.annotation.Validated;
    10. import org.springframework.web.bind.annotation.*;
    11. import javax.annotation.Resource;
    12. import java.util.HashMap;
    13. import java.util.List;
    14. import java.util.Map;
    15. @Controller
    16. @RequestMapping("/student")
    17. public class StudentController {
    18. @Resource
    19. private StudentService studentService;
    20. private String prefix = "student";
    21. @GetMapping()
    22. public String notice()
    23. {
    24. return prefix + "/list";
    25. }
    26. /**
    27. * 学生信息列表
    28. * @param student
    29. * @return
    30. */
    31. @RequestMapping("/list")
    32. @ResponseBody
    33. public Object list(int page, int limit,Student student){
    34. page = Math.max(page, 1);
    35. limit = limit < 1 ? 10: limit;
    36. Page<Student> studentpage = PageHelper.startPage(page, limit);
    37. studentService.queryStudentList(student);
    38. //重新封装返回参数,用于页面显示start
    39. Map<String, Object> result = new HashMap<>();
    40. result.put("data",studentpage.getResult());
    41. result.put("code",0);
    42. result.put("count",studentpage.getTotal());
    43. result.put("msg","学生信息列表");
    44. //重新封装返回参数,用于页面显示end
    45. return result;
    46. }
    47. /**
    48. * 修改公学生信息
    49. */
    50. @GetMapping("/edit")
    51. public String edit(Long id, ModelMap mmap) {
    52. Student student = studentService.queryStudentById(id);
    53. mmap.put("student", student);
    54. return prefix + "/edit";
    55. }
    56. /**
    57. * 学生信息查看
    58. * @param id 主键ID
    59. * @return
    60. */
    61. @RequestMapping("/queryStudentById")
    62. @ResponseBody
    63. public Object queryStudentById(long id) {
    64. Student student = studentService.queryStudentById(id);
    65. return student!=null ? ApiResult.success(student) : ApiResult.fail("学生信息不存在");
    66. }
    67. /**
    68. * 学生信息新增
    69. * @param student
    70. * @return
    71. */
    72. @RequestMapping("/addStudent")
    73. @ResponseBody
    74. public Object addStudent(@Validated Student student) {
    75. int cnt = studentService.addStudent(student);
    76. return cnt>0 ? ApiResult.success("新增成功") : ApiResult.fail("新增失败");
    77. }
    78. /**
    79. * 学生信息更新
    80. * @param student
    81. * @return
    82. */
    83. @RequestMapping("/updateStudent")
    84. @ResponseBody
    85. public Object updateStudent(@Validated Student student) {
    86. int cnt = studentService.updateStudentById(student);
    87. return cnt>0 ? ApiResult.success("修改成功") : ApiResult.fail("修改失败");
    88. }
    89. /**
    90. * 学生信息删除
    91. * @param id 主键ID
    92. * @return
    93. */
    94. @RequestMapping("/deleteStudentById")
    95. @ResponseBody
    96. public Object deleteStudentById(long id) {
    97. int cnt = studentService.deleteStudentById(id);
    98. return cnt>0 ? ApiResult.success("删除成功") : ApiResult.fail("删除失败");
    99. }
    100. }

     

    前端代码:

    list

    1. <!DOCTYPE html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <title>springboot+mybatis+mysql+layUI+thymeleaf测试</title>
    5. <link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" />
    6. <script src="https://www.layuicdn.com/layui/layui.js"></script>
    7. </head>
    8. <body>
    9. <!-- 内容主体 -->
    10. <div class="main">
    11. <div class="books-pane">
    12. <button type="button" class="layui-btn layui-btn-fluid" id="btn_add"><i class="layui-icon">&#xe608;</i> 添加</button>
    13. </div>
    14. <div class="books-pane">
    15. <table class="layui-hide" id="student_table" lay-filter ="student_table"></table>
    16. <!--工具栏模板:-->
    17. <div type="text/html" id="toolbar" style="display: none;">
    18. <form class="layui-form layui-form-pane" lay-size="lg" style="text-align: left;height: 36px">
    19. <div class="layui-form-item">
    20. <div class="layui-inline">
    21. <label class="layui-form-label">关键字搜索</label>
    22. <div class="layui-input-inline">
    23. <input placeholder="姓名" type="text" name="keyword" autocomplete="off" class="layui-input">
    24. </div>
    25. </div>
    26. <div class="layui-inline">
    27. <button class="layui-btn" lay-submit lay-filter="*">搜索</button>
    28. </div>
    29. </div>
    30. </form>
    31. </div>
    32. </div>
    33. </div>
    34. <script type="text/html" id="lineBtns">
    35. <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    36. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    37. </script>
    38. <script>
    39. layui.use(['element', 'table', 'form', 'jquery','laydate'], function () {
    40. var element = layui.element; //导航的hover效果、二级菜单等功能,需要依赖element模块
    41. var table = layui.table;
    42. var form = layui.form;
    43. var $ = layui.jquery;
    44. table.render({
    45. elem: '#student_table'
    46. , url: '/student/list'
    47. , toolbar: '#toolbar'
    48. , title: '学员信息列表'
    49. , cols: [
    50. [
    51. {field: 'id', title: '序号', sort: true}
    52. , {field: 'name',title: '姓名'}
    53. , {field: 'sex', title: '性别', align: "center", templet: function(d){if(d.sex == 0){return '男'}else{return '女'}}}
    54. , {field: 'age', title: '年龄', sort: true}
    55. , {field: 'time', title: '出生日期', sort: true, templet : "
      {{layui.util.toDateString(d.time, 'yyyy-MM-dd')}}
      "
      }
    56. , {field: 'remarks', title: '简介'}
    57. , {fixed: 'right', align:'right', toolbar: '#lineBtns'}
    58. ]
    59. ], page: true
    60. });
    61. form.on('submit(*)', function (data) {
    62. layer.msg("根据姓名查找");
    63. table.reload('student_table', {
    64. url: '/student/list'
    65. , where: {name: data.field.keyword} //设定异步数据接口的额外参数
    66. });
    67. return false;
    68. });
    69. //监听行工具事件
    70. table.on('tool(student_table)', function(obj){ //注:tool 是工具条事件名,testtable 原始容器的属性 lay-filter="对应的值"
    71. var data = obj.data,//获得当前行数据
    72. layEvent = obj.event; //获得 lay-event 对应的值
    73. if(layEvent === 'detail'){
    74. layer.msg('查看操作');
    75. } else if(layEvent === 'del'){
    76. layer.confirm('确定要删除当前信息吗?', function(index){
    77. //向服务端发送删除指令
    78. $.getJSON('/student/deleteStudentById',{id: data.id}, function(data){
    79. if (data.status === 200) {
    80. table.reload('student_table', {
    81. url: '/student/list'
    82. });
    83. layer.msg(data.data);
    84. } else if (data.status === 201) {
    85. layer.msg(data.data);
    86. }
    87. });
    88. });
    89. } else if(layEvent === 'edit'){
    90. layer.open({
    91. type: 2 ,
    92. title:"修改学员信息",
    93. area: ['500px', '600px'],
    94. shadeClose:false,
    95. content: "/student/edit?id="+data.id,
    96. });
    97. }
    98. });
    99. /**
    100. * 添加
    101. */
    102. $('#btn_add').on('click',function(index){
    103. layer.open({
    104. type: 2 ,
    105. title:"添加学员信息",
    106. area: ['500px', '600px'],
    107. shadeClose:false,
    108. content: "/student/add.html",
    109. });
    110. });
    111. });
    112. </script>
    113. </body>
    114. </html>

    add:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" />
    7. <script src="https://www.layuicdn.com/layui/layui.js"></script>
    8. </head>
    9. <body>
    10. <div class="site-text" style="margin: 5%;">
    11. <form class="layui-form layui-form-pane" onsubmit="return false">
    12. <div class="layui-form-item">
    13. <div class="layui-form-item">
    14. <label class="layui-form-label">姓名</label>
    15. <div class="layui-input-block">
    16. <input class="layui-input" type="text" name="name" lay-verify="required">
    17. </div>
    18. </div>
    19. <div class="layui-form-item">
    20. <label class="layui-form-label">性别</label>
    21. <div class="layui-input-block">
    22. <input type="radio" name="sex" value="0" title="男" checked>
    23. <input type="radio" name="sex" value="1" title="女">
    24. </div>
    25. </div>
    26. <div class="layui-form-item">
    27. <label class="layui-form-label">年龄</label>
    28. <div class="layui-input-block">
    29. <input class="layui-input" type="text" name="age" lay-verify="required|number">
    30. </div>
    31. </div>
    32. <div class="layui-form-item">
    33. <label class="layui-form-label">出生年份</label>
    34. <div class="layui-input-block">
    35. <input type="text" class="layui-input" id="time" name="time" placeholder="yyyy-MM-dd" lay-verify="required|date">
    36. </div>
    37. </div>
    38. <div class="layui-form-item layui-form-text">
    39. <label class="layui-form-label">备注</label>
    40. <div class="layui-input-block">
    41. <textarea placeholder="请输入内容" class="layui-textarea" name="remarks" lay-verify="required"></textarea>
    42. </div>
    43. </div>
    44. <div class="layui-form-item">
    45. <div class="layui-input-block">
    46. <button class="layui-btn" lay-submit lay-filter="addStudent">立即提交</button>
    47. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
    48. </div>
    49. </div>
    50. </div>
    51. </form>
    52. <script>
    53. layui.use(['element', 'table', 'form', 'jquery','laydate'], function(){
    54. var form = layui.form;
    55. var $ = layui.jquery;
    56. var table = layui.table;
    57. //监听提交
    58. form.on('submit(addStudent)', function(data){
    59. $.ajax({
    60. url: "../student/addStudent",
    61. type: "POST",
    62. data: data.field,
    63. success: function (data) {
    64. if (data.status === 200) {
    65. layer.alert(data.data, { shift: -1 }, function () {
    66. // 获得frame索引
    67. var index = parent.layer.getFrameIndex(window.name);
    68. //关闭当前frame
    69. parent.layer.close(index);
    70. //修改成功后刷新父界面
    71. window.parent.location.reload();
    72. });
    73. } else if (data.status === 201) {
    74. layer.msg(data.data);
    75. }
    76. },
    77. error: function (xhr, status, error) {
    78. layer.msg("网络出错")
    79. }
    80. });
    81. return false;
    82. });
    83. /**
    84. * 时间插件
    85. **/
    86. var laydate = layui.laydate;
    87. laydate.render({
    88. elem: '#time'
    89. });
    90. });
    91. </script>
    92. </div>
    93. </body>
    94. </html>

    edit:

    1. <!DOCTYPE html>
    2. <html lang="zh-cn" xmlns:th="http://www.thymeleaf.org">
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <title>Title</title>
    7. <link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" />
    8. <script src="https://www.layuicdn.com/layui/layui.js"></script>
    9. </head>
    10. <body>
    11. <div class="site-text" style="margin: 5%;">
    12. <form class="layui-form layui-form-pane" onsubmit="return false" th:object="${student}">
    13. <input name="id" th:field="*{id}" type="hidden">
    14. <div class="layui-form-item">
    15. <div class="layui-form-item">
    16. <label class="layui-form-label">姓名</label>
    17. <div class="layui-input-block">
    18. <input class="layui-input" type="text" name="name" th:field="*{name}" lay-verify="required">
    19. </div>
    20. </div>
    21. <div class="layui-form-item">
    22. <label class="layui-form-label">性别</label>
    23. <div class="layui-input-block">
    24. <input type="radio" name="sex" th:field="*{sex}" value="0" title="男" checked>
    25. <input type="radio" name="sex" th:field="*{sex}" value="1" title="女">
    26. </div>
    27. </div>
    28. <div class="layui-form-item">
    29. <label class="layui-form-label">年龄</label>
    30. <div class="layui-input-block">
    31. <input class="layui-input" type="text" name="age" th:field="*{age}" lay-verify="required|number">
    32. </div>
    33. </div>
    34. <div class="layui-form-item">
    35. <label class="layui-form-label">出生年份</label>
    36. <div class="layui-input-block">
    37. <input type="text" class="layui-input" id="time" name="time" th:field="*{time}" placeholder="yyyy-MM-dd" lay-verify="required|date">
    38. </div>
    39. </div>
    40. <div class="layui-form-item layui-form-text">
    41. <label class="layui-form-label">备注</label>
    42. <div class="layui-input-block">
    43. <textarea placeholder="请输入内容" class="layui-textarea" name="remarks" th:field="*{remarks}" lay-verify="required"></textarea>
    44. </div>
    45. </div>
    46. <div class="layui-form-item">
    47. <div class="layui-input-block">
    48. <button class="layui-btn" lay-submit lay-filter="updateStudent">立即提交</button>
    49. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
    50. </div>
    51. </div>
    52. </div>
    53. </form>
    54. <script>
    55. layui.use(['element', 'table', 'form', 'jquery','laydate'], function(){
    56. var form = layui.form;
    57. var $ = layui.jquery;
    58. var table = layui.table;
    59. //监听提交
    60. form.on('submit(updateStudent)', function(data){
    61. $.ajax({
    62. url: "../student/updateStudent",
    63. type: "POST",
    64. data: data.field,
    65. success: function (data) {
    66. if (data.status === 200) {
    67. layer.alert(data.data, { shift: -1 }, function () {
    68. // 获得frame索引
    69. var index = parent.layer.getFrameIndex(window.name);
    70. //关闭当前frame
    71. parent.layer.close(index);
    72. //修改成功后刷新父界面
    73. window.parent.location.reload();
    74. });
    75. } else if (data.status === 201) {
    76. layer.msg(data.data);
    77. }
    78. },
    79. error: function (xhr, status, error) {
    80. layer.msg("网络出错")
    81. }
    82. });
    83. return false;
    84. });
    85. /**
    86. * 时间插件
    87. **/
    88. var laydate = layui.laydate;
    89. laydate.render({
    90. elem: '#time'
    91. });
    92. });
    93. </script>
    94. </div>
    95. </body>
    96. </html>

    sql:

    1. -- ----------------------------
    2. DROP TABLE IF EXISTS `t_student`;
    3. CREATE TABLE `t_student` (
    4. `id` int(11) NOT NULL AUTO_INCREMENT,
    5. `name` varchar(255) DEFAULT NULL COMMENT '姓名',
    6. `age` int(11) DEFAULT NULL COMMENT '年龄',
    7. `sex` int(11) DEFAULT NULL COMMENT '性别',
    8. `time` datetime DEFAULT NULL COMMENT '出生年月',
    9. `remarks` text COMMENT '备注',
    10. `createTime` datetime DEFAULT NULL COMMENT '创建时间',
    11. PRIMARY KEY (`id`)
    12. ) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8mb4 COMMENT='主键';

  • 相关阅读:
    [Cortex-M3]-4-如何在内嵌RAM中运行程序
    机器学习在工业机器人领域有哪些应用?
    MOCK远程API调用的简单实现
    读书笔记-学习GNU Emacs-3终篇
    【29】CISC和RISC:为什么手机芯片都是ARM?
    18-GuliMall 压力测试与性能监控
    江西公安公布多起网络安全案例
    Linux下jar包的运行、查看、终止
    QT界面设计随笔
    14.结构和其他数据形式
  • 原文地址:https://blog.csdn.net/weixin_46437112/article/details/128035411