基于springboot实现管理系统

结合上一篇文章,在搭建好环境后,开始编写代码。

注意,以下userPassward都改写为userPassword!!!!   

环境搭建好后,项目结构如下图:

基于springboot实现管理系统_第1张图片

一、登录模块 

 1、在src-》main-》java-》cn.smbms中建包(controller、dao、pojo、service)。

基于springboot实现管理系统_第2张图片

2、在dao层下建包role、user。根据情况建立相应包。

基于springboot实现管理系统_第3张图片

3、在 src-》main下建包webapp

基于springboot实现管理系统_第4张图片

 4、代码编写,在controller层中先写一些方法

      Controller层负责具体的业务模块流程的控制。其中参数user Code和userPassword与login.html 及 frame.html页面相关联。

     该层中主要编写代码如下:

基于springboot实现管理系统_第5张图片

5、在pojo实体类层下建立实体类User.java

基于springboot实现管理系统_第6张图片

 以下先从dao层开始

 6、在dao层user目录下建立接口

基于springboot实现管理系统_第7张图片

7、因为不用另外写UserMapperImpl来实现接口,因此需要先在application.yml下进行配置,如下。

      该代码是用来映射实体的别名。

基于springboot实现管理系统_第8张图片

8、 在resources目录下建立如下目录

       并在目录user下建立xml文件。

基于springboot实现管理系统_第9张图片

 9、在UserMapper.xml文件下编写代码如下

基于springboot实现管理系统_第10张图片

 以上dao层先告一段落

接下来是service层 ,实现业务逻辑

 10、在service层中建立包

      UserService接口代码如下:

基于springboot实现管理系统_第11张图片

      UserServiceImpl实现代码如下:

基于springboot实现管理系统_第12张图片

 servic层先暂停 

 11、回到controller层

基于springboot实现管理系统_第13张图片

         在controller层的方法doLogin中,将return后改为"redirect:/main "。再写一个方法,将其剥离开,通过main跳转到frame.jsp页面。

基于springboot实现管理系统_第14张图片

      但这样的话,用户如果知道了这个地址http://localhost:8081/main 便可以不用输入密码,直接进入了frame.jsp页面。这样是我们不想要的,所以需要拦截。进行一个简单的拦截,.

       所以,如果在地址栏直接输入http://localhost:8081/main会跳转到登陆页面。

基于springboot实现管理系统_第15张图片

二、注销模块

   

 在controller层的UserController方法中:

基于springboot实现管理系统_第16张图片

三、角色模块

角色列表显示

1、controller层中新建RoleController.java

    此时只是把页面显示出来,还没和数据库连接。

基于springboot实现管理系统_第17张图片

2、进行与数据库相关——找到dao层,建立RoleMapper接口。此时又需要建立实体类,在pojo层中,建立Role.java。

public List getRoleList();//查询所有列表角色信息。

3、编写RoleMapper.xml配置映射文件






    
    
    

4、在service层建立接口和实现

RoleService:

package cn.smbms.service.role;


import cn.smbms.pojo.Role;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;


public interface RoleService {
    public List getRoleList();
}

RoleServiceImpl.java:

package cn.smbms.service.role;

import cn.smbms.dao.role.RoleMapper;
import cn.smbms.pojo.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 角色业务实现。
 */
@Service
public class RoleServiceImpl implements  RoleService{
    @Autowired
    private RoleMapper roleMapper;
    //查询角色列表
    @Override
    public List getRoleList() {
        return roleMapper.getRoleList();
    }
}

5、此时需要将数据库数据传到前台。

 List roleList = roleService.getRoleList();
使用此代码将数据从数据库拿过来,接下来想办法将数据传到前台。写一个参数model  ?????

在RoleController.java中:

import cn.smbms.pojo.Role;
import cn.smbms.service.role.RoleService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * 角色控制器
 */
@Controller
@RequestMapping("/sys/role")
public class RoleController {
    private RoleService roleService;

    @RequestMapping("/list.html")//上面的目录名+这个目录名就是要访问的路径
    public String roleList(Model model){
        List roleList = roleService.getRoleList();//已将数据从数据库拿过来,接下来想办法将数据传到前台。
        model.addAttribute("roleList",roleList);//""里的roleList是rolelist.jsp里面的key.
        return "rolelist";
    }
}

6、此时可以启动运行看看,报了个错-_-!!!

类似这种,不过我的现在已经好了,找不到我原来报错的信息了,和这个差不多。

Description:

Field userMapper in com.example.demo.service.impl.UserServiceImpl required a bean of type 'com.example.demo.dao.IUserMapper' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type '

cn.smbms.dao.user.UserMapper' in your configuration.

修改方案:

在启动了类中添加注解  

@MapperScan(value = "cn.smbms.dao.user")

基于springboot实现管理系统_第18张图片

7、增加角色 

所有逻辑顺序为:Mapper.java-->mapper.xml-->XXService.java-->xxServiceImpl.java-=>XXXController.java.

在RoleController.java中添加方法:

  @RequestMapping("/add.html")  //和rolelist中的”添加角色“代码处的路径一致
    public String toAdd() {

        return "roleadd";//跳转到roleadd.jsp
    }

在RoleMapper.java中:

@Mapper
public interface RoleMapper {
    //此时要返回一个角色列表list,用到泛型
    public List getRoleList();//查询所有列表角色信息。
    public int insert(Role role);
}

在RoleMapper.xml中添加:

  (其中#{}里面的内容要和实体类的属性一样。)

    id属性名和RoleMapper里面添加的方法名是相关联一样的。


        insert into smbms_role(roleCode,roleName,createBy,creationDate) VALUES (#{roleCode},#{roleName},#{createBy},#{creationDate})
    

在RoleService接口中添加:

  public boolean addRole(Role role);

在RoleServiceImpl.java中进行实现:

  @Override
    public boolean addRole(Role role) {
        int result = roleMapper.insert(role);
        if(result>0){
            return true;
        }
        return false;
    }

在RoleController.java中:

 /**
     * 此刻要真正实现角色添加
     *
     * 在roleadd.jsp里面,需要把所填的值“角色编码”和“角色名称”传到后台,
     * 在这里,直接写一个参数role
     * 但要保证Role里面的属性名与roleadd.jsp里面的‘name’属性铭一样。
     *
     * @param role
     * @return
    */
    @RequestMapping("/addsave.html")//要和在roleadd.jsp里面form标签后的路径名最后一个一致。
    public String add(Role role){
        boolean result = roleService.addRole(role);
        if(result){
            return "redirect:/sys/role/list.html";
        }
        return "roleadd";
    }

又报错了!!!什么鬼 

org.apache.ibatis.binding.BindingException: Mapper method 'cn.smbms.dao.role.RoleMapper.insert attempted to return null from a method with a primitive return type (int).

有人说:UPDATE 语句和INSERT INTO 语句 默认都返回的是 int类型  所java代码中接收的都是int类型 controller 需要改成Integer这样会减少一些意外的错误。

    但我RoleMapper里面设置的返回类型就是int型的呀!

和这个没关系友友们!

在RoleMapper.xml里面,添加角色应该用标签而不是 select * from smbms_role where id=#{id}

 RoleService.java中添加:

  public Role getRoleById(String id);

RoleServiceImpl.java中添加:

    //修改角色时进行”用户编码“的回显。
    @Override
    public Role getRoleById(String id) {
        Role role = roleMapper.getRoleById(id);
        return role;//此步也可以直接写成return roleMapper.getRoleById(id);
    }

 回到RoleController.java:

基于springboot实现管理系统_第21张图片

在rolemodify.jsp页面中这个表达式中的role 

 与controller中的要一致。

 字段回显完成!!


正式修改保存开始:

RoleMapper.java:

public int update(Role role);

RoleMapper.xml:


        update smbms_role set roleCode=#{roleCode},roleName=#{roleName},modifyDate=#{modifyDate} where id=#{id}
    

RoleService.java:

public boolean delete(String id);

RoleServiceImpl.java:

@Override
    public boolean updateRole(Role role) {
        int result=roleMapper.update(role);
        if(result>0){
            return true;
        }
        return false;
    }

RoleController:

   @RequestMapping("/modifysave.html")//进行正式修改
    public String update(Role role,HttpSession session){
        User user=(User) session.getAttribute("userSession");
       // role.setModifyBy(user.getId());//由谁创建
        role.setModifyDate(new Date());//会显示修改时间
       //System.out.println("Date");
        boolean result = roleService.updateRole(role);
        if(result){
            return "redirect:/sys/role/list.html";
        }
        return "rolemodify";
    }

 小知识点:

你可能感兴趣的:(spring,boot,java,spring,intellij-idea,学习)