我的第一个Springboot

要点总结:

主要流程:

Spring流程图

 

 

 

第一步:创建实体类

package com.winton.spark.modules.practice.entity;

import lombok.Data;

@Data
public class Student {
	
	private String id;
	private String name;
	private String no;
	private String sex;
	private String score;
	private String age;
	private String delFlag ;
	public Student() {
		super();
		this.delFlag=DEL_FLAG_NORMAL;
	}
	
	public Student(String id) {
		super();
		this.id = id;
	}


	public static final String DEL_FLAG_NORMAL = "0";
	public static final String DEL_FLAG_DELETE = "1";

	

}

然后创建相关的数据库,

第二部Dao,和xml

dao

package com.winton.spark.modules.practice.dao;

import java.util.List;

import com.winton.spark.core.common.persistence.CrudDao;
import com.winton.spark.modules.practice.entity.Student;

public interface StudentDao {

	//查询
	public List<Student> findAll();
	//根据编号查询
	public Student getById(Student student);
	//插入
	public void  addStudent(Student student);
	//修改
	public void updateStudent(Student student);
	//逻辑删除
	public void deleteStudent(Student student);
	
}

对应的xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.winton.spark.modules.practice.dao.StudentDao"><!-- 对应Dao的路径 -->
    
<!-- 查询 -->
<select id="findAll" resultType="Student">
    SELECT id, name, no, sex, score, age, del_flag
	FROM student WHERE del_flag = '0';
</select>

<!-- 根据编号查询 -->
<select id="getById" resultType="Student">
    SELECT id, name, no, sex, score, age, del_flag
	FROM student WHERE id = #{id};
</select>

<!-- 插入 -->
<insert id="addStudent" >
    INSERT INTO student 
    	(id, name, no, sex, score, age, del_flag ) 
    VALUES
    	(#{id}, #{name}, #{no}, #{sex}, #{score}, #{age}, #{delFlag});
</insert>

<!-- 逻辑删除 -->
<delete id="deleteStudent">
	UPDATE student SET
		del_flag = #{delFlag}
	WHERE id = #{id};
</delete>

<!--修 改 -->
<update id="updateStudent">
	UPDATE student SET
		name  = #{name},
		no    = #{no},
		sex   = #{sex},
		score = #{score},
		age   = #{age}
	WHERE id = #{id};
</update>
</mapper>

第三步,对应的Service

package com.winton.spark.modules.practice.service;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.winton.spark.modules.practice.dao.StudentDao;
import com.winton.spark.modules.practice.entity.Student;

@Service
@Transactional(readOnly = true)
public class StudentService {
	@Autowired
	private StudentDao studentDao;
	//查询
	public List<Student> findAll() {
		return studentDao.findAll();
	}
	public void save(Student student) {
		if(StringUtils.isBlank(student.getId())) {
			studentDao.addStudent(student);
		}else {
			studentDao.updateStudent(student);
		}
	}
	//根据编号查询
	public Student getById(Student student) {
		return studentDao.getById(student);
	}
	//插入
	public void  addStudent(Student student) {
		studentDao.addStudent(student);
	}
	//修改
	public void updateStudent(Student student) {
		studentDao.updateStudent(student);
	}
	//逻辑删除
	public void deleteStudent(Student student) {
		studentDao.deleteStudent(student);
	}
	

}

第四步Controller

package com.winton.spark.modules.practice.controller;

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

import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.winton.spark.core.common.annotion.BusinessLog;
import com.winton.spark.core.common.constant.dictmap.RoleDict;
import com.winton.spark.core.common.exception.BizExceptionEnum;
import com.winton.spark.core.common.exception.ServiceException;
import com.winton.spark.core.common.page.LayuiPageInfo;
import com.winton.spark.core.common.utils.PageFactory;
import com.winton.spark.core.common.utils.StringUtils;
import com.winton.spark.core.log.LogObjectHolder;
import com.winton.spark.core.reqres.ResponseData;
import com.winton.spark.core.reqres.SuccessResponseData;
import com.winton.spark.core.util.ToolUtil;
import com.winton.spark.core.util.ValidateUtil;
import com.winton.spark.modules.practice.entity.Student;
import com.winton.spark.modules.practice.service.StudentService;
import com.winton.spark.modules.system.entity.Role;
import com.winton.spark.modules.system.entity.User;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;

@Controller
@RequestMapping("/student")
public class StudentController {
	private static String PREFIX = "/html/modules/practice/";
	protected static SuccessResponseData SUCCESS_TIP = new SuccessResponseData();
	@Autowired
	private StudentService  studentService;
	
	@ModelAttribute//优先执行
	public Student get(@RequestParam(required=false) String id) {
		if (StringUtils.isNotBlank(id)){
			return studentService.getById(new Student(id));
		}else{
			return new Student();
		}
	}
	//转到学生页
	@RequestMapping("")
	public String index() {
		return PREFIX+"student.html";
	}
	//转到添加学生页
	//@RequiresPermissions("sys:student:edit")
	@RequestMapping("addForm")
	public String addForm(Student student , Model model) {
		if(ValidateUtil.isEmpty(student)) {
			throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
		}
		return PREFIX+"student_add.html";
	}
	
	//@RequiresPermissions("sys:role:edit")
	@BusinessLog(value = "添加学生", key = "name")
	@RequestMapping("/add")
	@ResponseBody
	public ResponseData add(Student student) {
		Student theStudent = studentService.getById(student);
		if(theStudent != null) {
			throw new ServiceException(BizExceptionEnum.STUDENT_ALREADY_REG);
		}
		studentService.save(student);
		return SUCCESS_TIP;
	}

	//转到修改学生页
	//@RequiresPermissions("sys:student:edit")
	@RequestMapping("editForm")
	public String editForm(Student student, Model model) {
		if(ValidateUtil.isEmpty(student)) {
			throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
		}
		LogObjectHolder.me().set(student);
		return PREFIX+"student_edit.html";
	}
	/**
	 * 修改学生基本信息
	 * @param role
	 * @return
	 */
	@RequestMapping("edit")
	@BusinessLog(value = "修改学生信息", key = "name")
	//@RequiresPermissions("sys:role:edit")
	@ResponseBody
	public ResponseData edit(Student student ){
		studentService.save(student);
		return SUCCESS_TIP;
	}
	//获取学生列表
	//@RequiresPermissions("sys:student:view")
	@RequestMapping("/list")
	@ResponseBody
	public LayuiPageInfo list(Student student) {
		PageFactory.startPage();
		List<Student> list =studentService.findAll();
		PageInfo<Student> pageInfo = new PageInfo<Student>(list);
		return PageFactory.createLayuiPageInfo(pageInfo);
	}
	
	

	/**
	 * 删除学生
	 * @param role
	 * @return
	 */
	@BusinessLog(value = "删除学生", key = "id")
//	@RequiresPermissions("sys:role:edit")
	@RequestMapping("delete")
	@ResponseBody
	public ResponseData delete(Student student){
		//缓存被删除的角色
		LogObjectHolder.me().set(student);
		studentService.deleteStudent(student);
		return SUCCESS_TIP;
	}

	/**
	 * 查找学生
	 * @param role
	 * @return
	 */
	@RequestMapping("/view")
	@ResponseBody
	public ResponseData view(Student student){
		if (ToolUtil.isEmpty(student)){
			throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
		}
		Map<String, Object> map = BeanUtil.beanToMap(student);
		HashMap<Object, Object> hashMap = CollectionUtil.newHashMap();
		hashMap.putAll(map);
		return ResponseData.success(hashMap);
	}
}











第五步 HTML 和JS

student.html

@layout("/html/common/_container.html",{js:["/assets/modules/practice/student.js"]}){

    <div class="layui-body-header">
        <span class="layui-body-header-title">学生</span>
    </div>
    
    <div class="layui-fluid">
        <div class="layui-row layui-col-space15">
            <div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
                <div class="layui-card">
                    <div class="layui-card-body">
                        <div class="layui-form toolbar">
                            <div class="layui-form-item">
                                <div class="layui-inline">
                                    <input id="studentName" class="layui-input" type="text" placeholder="请输入学生姓名"/>
                                </div>
                                <div class="layui-inline">
                                    <button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>鎼滅储</button>
                                    <!-- @if(shiro.hasPermission("sys:role:edit")) -->{
                                    <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>
                                    <!-- @} -->
                                    <button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>瀵煎嚭</button>
                                </div>
                            </div>
                        </div>
                        <table class="layui-table" id="studentTable" lay-filter="studentTable"></table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script type="text/html" id="tableBar">
        //@if(shiro.hasPermission("sys:role:edit")){
        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>
       // @}
        //@if(shiro.hasPermission("sys:role:edit")){
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">鍒犻櫎</a>
        //@}
        //@if(shiro.hasPermission("sys:role:setAuthority")){
        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="studentAssign">鏉冮檺閰嶇疆</a>
        //@}
    </script>
    @}

student_add.html

@layout("/html/common/_container.html",{bg:"bg-white",js:["/assets/modules/system/role/role_add.js"]}){
<form id="userForm" lay-filter="roleForm" class="layui-form model-form">
    <input name="id" type="hidden"/>

    
    <div class="layui-form-item">
        <label class="layui-form-label">瑙掕壊鍚嶇О<span style="color: red;">*</span></label>
        <div class="layui-input-block">
            <input name="name" placeholder="请输入学生姓名" type="text" class="layui-input" lay-verify="required" required/>
        </div>
    </div>

    <div class="layui-form-item text-right">
        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>淇濆瓨</button>
    </div>
</form>
@}

student_edit.html

@layout("/html/common/_container.html",{bg:"bg-white",js:["/assets/modules/practice/student_edit.js"]}){
<form id="studentForm" lay-filter="studentForm" class="layui-form model-form">
    <input name="id" type="hidden"/>

    <div class="layui-form-item">
        <label class="layui-form-label">瑙掕壊鍚嶇О<span style="color: red;">*</span></label>
        <div class="layui-input-block">
            <input name="name" placeholder="请输入学生姓名" type="text" class="layui-input" lay-verify="required" required/>
        </div>
    </div>

    <div class="layui-form-item text-right">
        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>淇濆瓨</button>
    </div>
</form>
@}

student.js

layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
    var $ = layui.$;
    var layer = layui.layer;
    var form = layui.form;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;

    /**
     * 系统管理--学生管理
     */
    var Student = {
        tableId: "studentTable",    //表格id
        condition: {
            studentName: ""
        }
    };

    /**
     * 初始化表格的列
     */

    Student.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'id', hide: true, sort: true, title: '学生id'},
            {field: 'name', sort: true, title: '学生姓名'},
            {field: 'no', sort: true, title: '学号'},
            {field: 'sex', sort: true, title: '性别'},
            {field: 'score', sort: true, title: '成绩'},
            {field: 'age', sort: true, title: '年龄'},
            {align: 'center', toolbar: '#tableBar', title: '操作', minWidth: 200}
        ]];
    };

    /**
     * 点击查询按钮
     */
    Student.search = function () {
        var queryData = {};
        queryData['name'] = $("#studentName").val();
        table.reload(Student.tableId, {where: queryData});
    };

    /**
     * 弹出添加学生
     */
    Student.openAddStudent = function () {
        admin.putTempData('formOk', false);
        top.layui.admin.open({
            title: '添加学生',
            content: Spark.ctxPath + '/student/addForm',
            end: function () {
                admin.getTempData('formOk') && table.reload(Student.tableId);
            }
        });
    };

    /**
     * 导出excel按钮
     */
    Student.exportExcel = function () {
        var checkRows = table.checkStatus(Student.tableId);
        if (checkRows.data.length === 0) {
            Spark.error("请选择要导出的数据");
        } else {
            table.exportFile(tableResult.config.id, checkRows.data, 'xls');
        }
    };

    /**
     * 点击编辑学生信息
     *
     * @param data 点击按钮时候的行数据
     */
    Student.onEditStudent = function (data) {
        admin.putTempData('formOk', false);
        top.layui.admin.open({
           
            title: '修改学生信息',
            content: Spark.ctxPath + '/student/editForm?id=' + data.id,
            end: function () {
                admin.getTempData('formOk') && table.reload(Student.tableId);
            }
        });
    };

    /**
     * 点击删除学生
     *
     * @param data 点击按钮时候的行数据
     */
    Student.onDeleteStudent = function (data) {
        var operation = function () {
            var ajax = new $ax(Spark.ctxPath + "/student/delete", function () {
                Spark.success("删除成功!");
                table.reload(Student.tableId);
            }, function (data) {
                Spark.error("删除失败!" + data.responseJSON.message + "!");
            });
            ajax.set("id", data.id);
            ajax.start();
        };
        Spark.confirm("是否删除角色 " + data.name + "?", operation);
    };

    

    // 渲染表格
    var tableResult = table.render({
        elem: '#' + Student.tableId,
        url: Spark.ctxPath + '/student/list',
        page: true,
        height: "full-158",
        cellMinWidth: 100,
        cols: Student.initColumn()
    });

    // 搜索按钮点击事件
    $('#btnSearch').click(function () {
        Student.search();
    });

    // 添加按钮点击事件
    $('#btnAdd').click(function () {
        Student.openAddRole();
    });

    // 导出excel
    $('#btnExp').click(function () {
        Student.exportExcel();
    });

    // 工具条点击事件
    table.on('tool(' + Student.tableId + ')', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;

        if (layEvent === 'edit') {
            Student.onEditStudent(data);
        } else if (layEvent === 'delete') {
            Student.onDeleteStudent(data);
        } else if (layEvent === 'studentAssign') {
            Student.studentAssign(data);
        }
    });
});

student_add.js

/**
 * 角色详情对话框
 */
var StudentInfoDlg = {
    data: {
        id: "",
        name: ""
    }
};

layui.use(['layer', 'form', 'admin', 'ax'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    var layer = layui.layer;

    // 让当前iframe弹层高度适应
    admin.iframeAuto();


    // 表单提交事件
    form.on('submit(btnSubmit)', function (data) {
        var ajax = new $ax(Spark.ctxPath + "/student/add", function (data) {
            Spark.success("添加成功!");

            //传给上个页面,刷新table用
            admin.putTempData('formOk', true);

            //关掉对话框
            admin.closeThisDialog();
        }, function (data) {
            Spark.error("添加失败!" + data.responseJSON.message)
        });
        ajax.set(data.field);
        ajax.start();
    });
});

student_edit.js

/**
 * 用户详情对话框
 */
var StudentInfoDlg = {
    data: {
    	id : "",
		name : "",
		no : "",
		sex : "",
		score : "",
		age : "",
		
    }
};

layui.use(['layer', 'form', 'admin', 'laydate', 'ax'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    var laydate = layui.laydate;
    var layer = layui.layer;

    // 让当前iframe弹层高度适应
    admin.iframeAuto();

    //获取用户信息
    var ajax = new $ax(Spark.ctxPath + "/user/getStudentInfo?id=" + Spark.getStudentlParam("id"));
    var result = ajax.start();
    console.log(result);
    form.val('studentForm', {
    'id' : result.data.id,
	'name' : result.data.name,
	'no' : result.data.no,
	'sex' : result.data.sex,
	'score': result.data.score,
	'age' : result.data.age,
    });

    // 渲染时间选择框
    laydate.render({
        elem: '#birthday'
    });

    // 表单提交事件
    form.on('submit(btnSubmit)', function (data) {
        var ajax = new $ax(Spark.ctxPath + "/student/edit", function (data) {
            Spark.success("修改成功!");

            //传给上个页面,刷新table用
            admin.putTempData('formOk', true);

            //关掉对话框
            admin.closeThisDialog();
        }, function (data) {
            Spark.error("修改失败!" + data.responseJSON.message)
        });
        ajax.set(data.field);
        ajax.start();
    });
});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值