我的项目构造
服务端
客户端
映射文件
依据零碎调用程序,理论开发会由后端向前端开发
客户端向服务端发动申请
$(()=>{//jquery中提供的页面加载实现当前要执行的函数 doLoadUI("load-user-id","user/user_list") doLoadUI("load-dept-id","dept/dept_list") doLoadUI("load-role-id","role/role_list") doLoadUI("load-menu-id","menu/doMenuUI") doLoadUI("load-log-id","log/doLogUI");})
点击分页查问
进行初始化模块页面
user_list.html
$(document).ready(function(){ $("#pageId").load("doPageUI",function(){ doGetObjects(); }); $(".input-group-btn") .on("click",".btn-search",doQueryObjects) .on("click",".btn-add,.btn-update",doLoadEditUI); $("tbody").on("click",".btn-valid",doValidById);});
doLoadEditUI办法判断所点击的事件
function doLoadEditUI(){ //1.断定点击的对象 var title; if($(this).hasClass("btn-add")){ title="增加用户"; doLoadPage(title); }else if($(this).hasClass("btn-update")){ title="批改用户"; var id=doGetCheckedId(); console.log("id="+id) if(!id){ alert("请先抉择"); return; } //基于id进行查问并加载编辑页面 doFindObjectById(id,title); }}
触发“增加用户” 按钮事件
function doLoadPage(title){ var url="user/user_edit" $("#mainContentId").load(url,function(){ $(".box-title").html(title); }) }
获取url为user/user_edit
user_edit.html
初始化页面和事件注册
$(document).ready(function(){ //页面加载实现当前加载角色信息并初始化页面 doLoadRoles(); //事件注册 $(".box-footer") .on("click",".btn-cancel",doCancel) .on("click",".btn-save",doSaveOrUpdate); $("#treeLayer") .on("click",".btn-cancel",doHideTree) .on("click",".btn-confirm",doConfirm); $(".form-horizontal") .on("click",".load-sys-dept",doLoadZTreeNodes);});
点击“增加”按钮 触发doSaveOrUpdate办法
function doSaveOrUpdate(){ var rowData=$("#mainContentId").data("rowData"); //1.获取表单数据 var params=doGetEditFormData(); if(rowData)params.id=rowData.user.id; //2.发动异步申请 var insertUrl="user/doSaveObject"; var updateUrl="user/doUpdateObject"; var url=rowData?updateUrl:insertUrl; console.log(params); $.post(url,params,function(result){ if(result.state==1){ alert(result.message); doCancel(); }else{ alert(result.message); } })}
调用url为--user/doSaveObject
**浏览器向服务端发动post申请
spring框架会在管制层中主动找到映射地址为user/doSaveObject的办法**
管制层SysUserController.java
controller类中调用服务层的办法来实现业务并返回数据
服务层:SysUserService.java
这个servie接口定义了实现业务的办法
并且被实现类SysUserServiceImpl.java实现,增加具体实现内容。
SysUserServiceImpl.java
实现类中首先对浏览器中发来的申请数据进行校验,是否合乎业务需要,否则抛出异样。
而后对业务数据进行封装提交
int rows=sysUserDao.insertObject(entity);//3.保留用户角色关系数据sysUserRoleDao.insertObjects(entity.getId(), roleIds);
调用Dao(mapper文件)接口中的插入数据的办法进行数据保留
Mapper文件:SysUserDao.java
接口中的insert办法会把数据封装到SysUser对象中 并通过SysUserMapper.xml映射文件中sql语句把数据保留到数据库
Pojo类 :SysUser.java
Mapper映射:SysUserMapper.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.cy.pj.sys.dao.SysUserDao"> <update id="updatePassword"> update sys_users set password=#{password}, salt=#{salt}, modifiedTime=now() where id=#{id} </update> <update id="updateObject" parameterType="com.cy.pj.common.pojo.SysUser"> update sys_users set username=#{username}, mobile=#{mobile}, email=#{email}, deptId=#{deptId}, modifiedTime=now(), modifiedUser=#{modifiedUser} where id=#{id} </update> <select id="findObjectById" parameterType="int" resultMap="sysUserDept"> select * from sys_users where id=#{id} </select> <insert id="insertObject" parameterType="com.cy.pj.common.pojo.SysUser" useGeneratedKeys="true" keyProperty="id"> insert into sys_users (username,password,deptId,email,mobile,salt,valid, createdTime,modifiedTime,createdUser,modifiedUser) values (#{username},#{password},#{deptId},#{email},#{mobile},#{salt},#{valid}, now(),now(),#{createdUser},#{modifiedUser}) </insert>
namespace 示意该文件所映射的Dao接口所在位置
mybatis会主动找id为insertObject的sql语句
语句中采纳rest格调的参数写法动静增加参数进行sql操作
数据保留到数据库中之后
前端页面会进行异步更新数据
业务实现
PS
- 服务层进行参数校验时的异样抛出能够自定义一个全局异样类
- pojo对象类中能够应用@Data注解,框架主动增加setter,getter办法,不过要先装置lombok插件
- Dao接口类记得增加@Mapper注解 让框架来主动治理映射 要不然.xml文件中写的namespace也是有效的
- 服务层增加@Service注解,示意交给Spring框架治理
@Servicepublic class SysUserServiceImpl implements SysUserService { @Autowired private SysUserDao sysUserDao; @Autowired private SysUserRoleDao sysUserRoleDao;
在类中应用@Autowired 主动进行对象创立(DI注入)
- 管制层的@RestController=@Response+@Controller 示意交给spring框架治理,并且返回return的信息