bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)

一 效果如下,不同用户登陆看到的菜单不同。本文是在bootstrap布局(二)的基础上增加的功能。

管理员用户id是4, 地址栏输入:localhost:8090/sysmenu/4

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第1张图片

普通用户id是6,地址栏输入:localhost:8090/sysmenu/6

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第2张图片

平台搭建如下:

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第3张图片bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第4张图片

二 数据库设计

1. t_menu设计如下:

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第5张图片

2.t_role_menu设计如下:

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第6张图片

3.t_role_user设计如下:

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第7张图片

4.t_user设计如下:

bootstrap布局(三)—后台布局实例(根据权限显示不同菜单)_第8张图片

三 html 代码

1.mainPage.html 主框架页面,「核心功能」:单击左侧菜单,右侧显示相应的页面,并激活左侧菜单。




    
    
    Dashboard Template for Bootstrap
    
    
    


    
    

欢迎使用Web系统

2019 © mylastday.

2.firstPage.html  登陆进去后的第一个页面




    
    Title


欢迎来到首页

四 java代码

1.mainController.java

@Controller
public class MainController {


    @Autowired
    MenuService menuService;

    @Autowired
    UserMapper userMapper;

    @GetMapping("/sysmenu/{userId}")
    public String  sysmenu(Model model, HttpSession session, @PathVariable("userId") Integer userId){
        User user=userMapper.getUserById(userId);
        List menuList=menuService.getMenusByHrId(userId);
        model.addAttribute("userlogin",user);
        session.setAttribute("menuList",menuList);
        return "redirect:/index";
    }

    @RequestMapping("firstPage")
    public String getfirstPage(){
        return "admin/firstPage";
    }


    @GetMapping("index")
    public String index()
    {
        return "admin/mainPage";
    }
}

2.UserController.java 和RoleController.java,MenuController.java类似,本处只举例User说明。

@Controller
public class UserController {

    @Autowired
    UserMapper userMapper;
    /**
     * 跳转到用户列表页面
     *
     * @param model 用户设值返回页面
     * @return
     */

    @GetMapping("users")
    public String getAllUsers(Model model)
    {
        List userList=userMapper.getALLUsers();
        model.addAttribute("userList", userList);

        /** 往前端 Thymeleaf 模板引擎时,开头不要加 "/" ,因为它默认配置的前缀就是:
         * spring.thymeleaf.prefix=classpath:/templates/
         */
        System.out.println("findAllUsers");
        return "user/userList";
    }
    \\.....其他代码未粘贴,可参考之前的增删改查
}

3.UserMapper.java和RoleMapper.java类似,本处只举例说明。

@Mapper
public interface UserMapper {
    @Select("select * from t_user where id = #{id}")
    public User getUserById(Integer id);


    @Options(useGeneratedKeys = true,keyProperty = "id") //加入自增主键
    @Insert("insert into t_user(username,password,employeeNum,departmentId) values(#{username},#{password},#{employeeNum},#{departmentId})")
    public int insertUser(User user);

    @Delete("delete from t_user where id=#{id}")
    public int deleteById(Integer id);

    @Update("update t_user set username=#{username},password=#{password} where id=#{id}")
    public int updateUser(User user);

    @Select("select * from t_user")
    public List getALLUsers();

    @Select("select u.*,r.rolename from t_user u left join t_role_user ru on u.id=ru.user_id left join t_role r on ru.role_id=r.id where username=#{username}")
    public List findByUserName(String username);
}

4.MenuMapper.java,本例重点使用

@Mapper
public interface MenuMapper {

    @Select("select t_menu.* from t_role_menu, t_menu,t_role_user where t_role_menu.menu_Id = t_menu.id and t_role_user.role_Id=t_role_menu.role_Id and t_role_user.user_Id=#{userId}")
    public List listMenuByUserId(Integer userId);

    @Select("select * from t_menu")
    public List  getAllMenus();
}

5.MenuService.java 为了简化,本例只有menu创建了serivce

@Service
public class MenuService {

    @Autowired
    MenuMapper menuMapper;
    public List getMenusByHrId(Integer userId){
        return menuMapper.listMenuByUserId(userId);
    }

    public List  getAllMenus(){return menuMapper.getAllMenus();}
}

5.User.java

public class User {
    private Integer id;
    private String  username;
    private String password;
    private String employeeNum;
    private Integer departmentId;
    //get,set函数省略
}

 五.数据库配置,本例数据库名称是 mybatis 

spring:
  datasource:
    username: root
    password: 12345678
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver
server:
  port: 8090

mybatis:
  configuration:
    #开启驼峰命名转换
    map-underscore-to-camel-case: true

六 重点

1. 菜单加载,loadPage的参数写法[[${firstMenu.href}]],另外不能给href设置真实地址。

2. 菜单激活

     $(document).ready(function () {
            $('#menulist> a').click(function (e) {

                $('#menulist> a').removeClass('active');
                $(this).addClass('active');
            });
        });

 

你可能感兴趣的:(springboot,bootstrap,mybatis,thymeleaf,mysql)