关于spring:SpringBoot项目中各模块顺序化理解试

4次阅读

共计 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 的信息
正文完
 0