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

我的项目构造

服务端

客户端

映射文件

依据零碎调用程序,理论开发会由后端向前端开发

客户端向服务端发动申请

$(()=>{//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的信息

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理