共计 3896 个字符,预计需要花费 10 分钟才能阅读完成。
我的项目构造
服务端
客户端
映射文件
依据零碎调用程序,理论开发会由后端向前端开发
客户端向服务端发动申请
$(()=>{//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 框架治理
@Service
public class SysUserServiceImpl implements SysUserService {
@Autowired
private SysUserDao sysUserDao;
@Autowired
private SysUserRoleDao sysUserRoleDao;
在类中应用 @Autowired 主动进行对象创立(DI 注入)
- 管制层的 @RestController=@Response+@Controller 示意交给 spring 框架治理,并且返回 return 的信息