spring boot +mybatis plue 实现用户统计

简介: spring boot +mybatis plue 实现用户统计

文章目录


代码展示

建立实体类

UserBean

RespBean

建立持久层

ListenerMapper

建立服务层接口

IListenerService

建立服务层实现

ListenerServiceImpl

建立控制层

ListenerController


代码展示


建立实体类


UserBean


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
 * @Author: Ljh
 * @Date: 2021/5/11 16:20
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
@TableName("tab_member")
@ApiModel(value="用户", description="注册时产生的基本账户")
public class UserBean {
    @TableId(type = IdType.AUTO)
    private Integer memberId;
    private Integer memberAccountNumber;
    private String memberPassword;
    private String memberPhone;
}

RespBean


/**
 * @Author: Ljx
 * @Date: 2021/5/13 21:58
 */
public class RespBean {
    private Integer status;
    private String msg;
    private Object obj;
    public static RespBean build() {
        return new RespBean();
    }
    public static RespBean ok(Object obj) {
        return new RespBean(200, null, null);
    }
    public static RespBean ok(String msg) {
        return new RespBean(200, msg, null);
    }
    public static RespBean ok(String msg, Object obj) {
        return new RespBean(200, msg, obj);
    }
    public static  RespBean error(Object obj){
        return new RespBean(500,null,obj);
    }
    public static RespBean error(String msg) {
        return new RespBean(500, msg, null);
    }
    public static RespBean error(String msg, Object obj) {
        return new RespBean(500, msg, obj);
    }
    private RespBean() {
    }
    private RespBean(Integer status, String msg, Object obj) {
        this.status = status;
        this.msg = msg;
        this.obj = obj;
    }
    public Integer getStatus() {
        return status;
    }
    public RespBean setStatus(Integer status) {
        this.status = status;
        return this;
    }
    public String getMsg() {
        return msg;
    }
    public RespBean setMsg(String msg) {
        this.msg = msg;
        return this;
    }
    public Object getObj() {
        return obj;
    }
    public RespBean setObj(Object obj) {
        this.obj = obj;
        return this;
    }
}

建立持久层


ListenerMapper


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import studio.banner.forumwebsite.bean.UserBean;
/**
 * @Author: Ljx
 * @Date: 2021/5/14 21:05
 */
@Repository
public interface ListenerMapper extends BaseMapper<UserBean> {
}

建立服务层接口


IListenerService


import java.util.List;
/**
 * @Author: Ljx
 * @Date: 2021/5/14 21:00
 */
public interface IListenerService {
    /**
     * 查询所有用户
     * @return
     */
    List<UserBean> selectAllUser();
}

建立服务层实现


ListenerServiceImpl


import java.util.List;
/**
 * @Author: Ljx
 * @Date: 2021/5/14 21:09
 */
@Service
public class ListenerServiceImpl implements IListenerService {
    @Autowired
    private ListenerMapper listenerMapper;
    @Override
    public List<UserBean> selectAllUser() {
        List<UserBean> list = listenerMapper.selectList(null);
        return list;
    }
}

建立控制层


ListenerController


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import studio.banner.forumwebsite.bean.RespBean;
import studio.banner.forumwebsite.bean.UserBean;
import studio.banner.forumwebsite.config.MyHttpSessionListener;
import studio.banner.forumwebsite.service.impl.ListenerServiceImpl;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
 * @Author: Ljx
 * @Date: 2021/5/13 22:02
 */
@RestController
@Api(tags = "统计在线人数", value = "CollectController")
public class ListenerController {
    private static final Logger logger = LoggerFactory.getLogger(ListenerController.class);
    /**
     * 登录
     */
    @Autowired
    private ListenerServiceImpl listenerService;
    @ApiOperation(value = "用户登录", notes = "用户对象不能为空", httpMethod = "POST")
    @PostMapping("/login")
    public RespBean getUser(Integer username, String password, HttpSession session) {
        session.setMaxInactiveInterval(60*30);
        for (UserBean user: listenerService.selectAllUser()) {
            if (username.equals(user.getMemberAccountNumber()) && password.equals(user.getMemberPassword())){
                logger.info("用户【"+username+"】登陆开始!");
                session.setAttribute("loginName",username);
                logger.info("用户【"+username+"】登陆成功!");
                return RespBean.ok("用户【"+username+"】登陆成功!");
            }
        }
        logger.info("用户【"+username+"】登录失败!");
        return RespBean.error("用户【"+username+"】登录失败!");
    }
    /**
     *查询在线人数
     */
    @ApiOperation(value = "查询在线人数", httpMethod = "GET")
    @GetMapping("/online")
    public RespBean online() {
        return  RespBean.ok("当前在线人数:" + MyHttpSessionListener.online + "人");
    }
    /**
     * 退出登录
     */
    @ApiOperation(value = "退出登录", httpMethod = "GET")
    @GetMapping ("/logout")
    public RespBean logout(HttpServletRequest request) {
        logger.info("用户退出登录开始!");
        HttpSession session = request.getSession(false);
        if(session != null){
            session.removeAttribute("loginName");
            session.invalidate();
        }
        logger.info("用户退出登录结束!");
        return RespBean.ok("退出成功");
    }
    /**
     * 判断session是否有效
     * @param httpServletRequest
     * @return String
     */
    @ApiOperation(value = "判断session是否有效",httpMethod = "GET")
    @GetMapping("/getSession")
    public RespBean getSession(HttpServletRequest httpServletRequest) {
        HttpSession session = httpServletRequest.getSession();
        Integer loginName = (Integer) session.getAttribute("loginName");
        if (loginName != null) {
            return RespBean.ok("session有效");
        }
        return null;
    }
}


相关文章
|
3月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
537 1
Spring boot 使用mybatis generator 自动生成代码插件
|
6月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
261 0
|
3月前
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
146 1
|
2月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
108 0
|
3月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
144 1
|
6月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
491 0
|
6月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
806 0
|
4月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
405 1
|
5月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
401 7
|
4月前
|
供应链 JavaScript BI
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
这是一款专为小微企业打造的 SaaS ERP 管理系统,基于 SpringBoot+Vue+ElementUI+UniAPP 技术栈开发,帮助企业轻松上云。系统覆盖进销存、采购、销售、生产、财务、品质、OA 办公及 CRM 等核心功能,业务流程清晰且操作简便。支持二次开发与商用,提供自定义界面、审批流配置及灵活报表设计,助力企业高效管理与数字化转型。
420 2
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发