基于springboot实现管理系统

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

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

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

一、登录模块 

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

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

3、在 src-》main下建包webapp

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

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

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

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

 以下先从dao层开始

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

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

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

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

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

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

 以上dao层先告一段落

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

 10、在service层中建立包

      UserService接口代码如下:

      UserServiceImpl实现代码如下:

 servic层先暂停 

 11、回到controller层

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

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

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

二、注销模块

   

 在controller层的UserController方法中:

三、角色模块

角色列表显示

1、controller层中新建RoleController.java

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

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

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

3、编写RoleMapper.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="cn.smbms.dao.role.RoleMapper">
    <!--resultType是访问类型-->
    <!--不用写parameterType="string",因为没有参数-->
    <select id="getRoleList" resultType="Role">
        select * from smbms_role
    </select>
</mapper>

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<Role> 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<Role> getRoleList() {
        return roleMapper.getRoleList();
    }
}

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

 List<Role> 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<Role> 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")

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<Role> getRoleList();//查询所有列表角色信息。
    public int insert(Role role);
}

在RoleMapper.xml中添加:

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

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

<insert id="insert" parameterType="Role">
        insert into smbms_role(roleCode,roleName,createBy,creationDate) VALUES (#{roleCode},#{roleName},#{createBy},#{creationDate})
    </insert>

在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里面,添加角色应该用<insert>标签而不是<select>标签。。

                                                              完成!

出现了一个问题:

页面上未显示创建时间以及由谁创建(隐式数据)

需要在RoleController.java中添加:

角色添加模块完成了 !!

8、角色修改


RoleController.java中添加:

方法上面的注解:

@RequestMapping("/toUpdate.html")

要与rolelist.jsp的

 一致。

 这个

?id=${role.id}是将此处角色的id传到数据库,不能少。否则点击修改不回显。

 点击修改后,要进行"用户编码"等字段的回显:

RoleMapper.java中添加:

public Role getRoleById(@Param("id") String id);//@Param里面的参数id 与Mapper.xml中的#{}一致。

RoleMapper.xml中添加:

<select id="getRoleById" resultType="Role" parameterType="string">
        select * from smbms_role where id=#{id}
    </select>

 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:

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

 与controller中的要一致。

 字段回显完成!!


正式修改保存开始:

RoleMapper.java:

public int update(Role role);

RoleMapper.xml:

<update id="update" parameterType="Role">
        update smbms_role set roleCode=#{roleCode},roleName=#{roleName},modifyDate=#{modifyDate} where id=#{id}
    </update>

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";
    }

 小知识点:

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值