SpringBoot+maven+Mybatis+MybatisPlus+shiro+freemarker+mysql

已搭建的框架,简单使用介绍

开发环境

jdk1.8

maven


目录结构

该工程不是传统的javaweb工程,因此没有web.xml,也没有WEB-INF等文件夹。

采用maven聚合方式,由两个模块组成:

core模块:核心代码、工具类、配置、启动信息等

config:配置bean(一般不要修改)

util:工具类,可供调用

web模块:业务代码(action、service、mapper、bean等)

action:admin(电脑端)、api(对外接口)、mobile(移动端)

resources:mapper(Mapper.xml)、static(静态文件:js、css、img等)、templates(页面)


启动方式

启动前初始化项目:在项目根目录执行maven命令:mvn clean install

  1. eclipse/idea:执行com.StartApplication中的main方法
  2. 命令行:java -jar ***.jar(架包由打包命令生成)用于服务器部署
  3. maven:在core模块根目录执行命令:mvn spring-boot run

访问:localhost:8080/login

restful风格url:无需添加后缀


项目配置

所有配置集中在core模块中,application.yml为数据库配置文件,logback-spring.xml为日志配置文件。

开发注意:所有业务逻辑写在web模块,核心代码写入core模块。

端口配置在application.yml中。

热部署开关在application.yml中,打开时,不需要手动重启,即可对代码进行更新。


项目打包

在web模块根目录执行maven命令:mvn clean package

web模块target目录生成项目架包,用于服务器发布。


shiro使用方法

过滤器配置在com.ydt.zdpyc.config.ShiroConfig中,默认除“/login","/dologin"等操作以外的方法,都需要先登录。

java中判断是否登录:

UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginName, password);
    Subject subject = SecurityUtils.getSubject();
        try {
            subject.login(usernamePasswordToken); 
            UUser user = (UUser) subject.getPrincipal();
            session.setAttribute(SystemConfig.ManagerSessionName, user);
            //完成登录
        } catch (Exception e) {
        //返回登录页面
        }

freemarker中标签:

1.guest(游客)

<@shiro.guest>  
您当前是游客,登录
 

2.user(已经登录,或者记住我登录)

<@shiro.user>  
欢迎[<@shiro.principal/>]登录,退出  
   

3.authenticated(已经认证,排除记住我登录的)

<@shiro.authenticated>  
    用户[<@shiro.principal/>]已身份验证通过  
   

4.notAuthenticated(和authenticated相反)

<@shiro.notAuthenticated>
    当前身份未认证(包括记住我登录的)
 

5.principal标签

nickname为user对象中的属性
<@shiro.principal property="nickname"/>

7.hasAnyRoles标签(判断是否拥有这些角色的其中一个)

<@shiro.hasRole name="admin">  
    用户[<@shiro.principal/>]拥有角色admin

7.hasAnyRoles标签(判断是否拥有这些角色的其中一个)

<@shiro.hasAnyRoles name="admin,user,member">  
用户[<@shiro.principal/>]拥有角色admin或user或member

8.lacksRole标签(判断是否不拥有这个角色)

<@shiro.lacksRole name="admin">  
用户[<@shiro.principal/>]不拥有admin角色
   

9.hasPermission标签(判断是否有拥有这个权限)

<@shiro.hasPermission name="user:add">  
    用户[<@shiro.principal/>]拥有user:add权限
   

10.lacksPermission标签(判断是否没有这个权限)

<@shiro.lacksPermission name="user:add">  
    用户[<@shiro.principal/>]不拥有user:add权限
   

代码生成工具

生成方法

com.ydt.zdpyc.util.MpGenerator

将表名写入下列数组,执行main方法即可(可同时生成多个,生成后的文件在根目录的temp文件夹下)。

private static String[] tables = new String[]{"u_permission","u_role","u_role_permission","u_user","u_user_role"};

生成结果

以生成 config 表为例

action

自动继承:AbstractAction(提供一些公用方法)

@Controller
@RequestMapping("/config")
public class ConfigAction extends AbstractAction {}

service

自定继承IService

public interface ConfigService extends IService {} 

serviceImpl

自定继承ServiceImpl、实现service

@Service
public class ConfigServiceImpl extends  ServiceImpl implements ConfigService {}

mapper

自动继承BaseMapper

public interface ConfigMapper extends BaseMapper {}

bean

自动继承Model

@TableName("config")
public class Config extends Model {}

Mapper.xml

只有命名空间,如果只是普通的增删改差,这个文件可以不使用






mybatisplus插件

以上文中生成的代码为例(config表)

新增

boolean i = configService.insert(config);
自带多种插入方法,代码提示即可查看。
如果不setId(),框架将自动填充32位uuid。

删除

boolean i = configService.deleteById(id);
自带多种删除方法,代码提示即可查看。

修改

boolean i = configService.updateById(config);
自带多种更新方法,代码提示即可查看。

查找

Config config = configService.selectById(id);
根据id查找;
List list = configService.selectByMap(map);
根据多个条件查找,map为Map;
自带多种更新方法,代码提示即可查看。

分页

 mapper:
    //普通的根据条件查询所有记录
    configMapper.selectConfigList(page,map);
    
service:
    public Page selectUserPage(Page page,Map map) {
        page.setRecords(configMapper.selectConfigList(page,map));
        return page;
    }

action:
    Page page = new Page<>(1, 10);
    //条件
    Map map = new HashMap;
    page = configService.selectUserPage(page,map);

日志

在需要打日志的类中加入:Logger log = LoggerFactory.getLogger(this.getClass());

引入的包为:

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

你可能感兴趣的:(SpringBoot+maven+Mybatis+MybatisPlus+shiro+freemarker+mysql)