首页 文章 精选 留言 我的

精选列表

搜索[MySQL],共10000篇文章
优秀的个人博客,低调大师

xzs-mysql v3.7.0 发布,在线教育考试系统,上手简单,部署容易

学之思简介: 学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持 web 端和微信小程序,能覆盖到 pc 机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker 部署。 本次更新内容: 1 .升级core-js、echarts、js-cookie等若干组件 2 .新增codemirror、file-saver等组件 3 .接口文档更新 4 .修复题目编辑器偶尔卡顿无反应 5 .优化数据分页组件,减少数据传输 学生端功能: 模块 介绍 登录 用户名、密码 注册 年级、用户名、密码 任务中心 管理员发布的年级任务,每个学生只能做一次 考试 题干支持文本、图片、数学公式、表格等,学生答题支持:文本 固定试卷 可重复练习、自行批改的试卷 时段试卷 在时间限制内,可重复练习、自行批改的试卷 考试记录 查看答卷记录和试卷信息 错题本 答错题目会自动进入错题本,显示题目基本信息 个人信息 显示学生个人资料 更新信息 修改个人资料、头像 个人动态 显示用户最近的个人动态 消息中心 用于接收管理员发送的消息 管理端功能: 模块 介绍 登录 用户名、密码 主页 试卷总数、题目总数、用户活跃度、题目月数量 学生列表 显示系统所有的学生,新增、修改、删除、禁用 管理员列表 显示系统所有的管理员,新增、修改、删除、禁用 学科列表 学科查询、修改、删除 学科创编 创建学科 试卷列表 试卷查询、修改、删除 试卷创编 创建的试卷为时段试卷、固定试卷、任务试卷 题目列表 题目查询、修改、删除 题目创建 题目支持单选题、多选题、判断题、填空题、简答题,题干支持文本、图片、表格、数学公式 任务列表 任务查询、修改、删除 消息列表 显示已发送的消息,消息已读人数等信息 消息发送 发送消息给多个用户 用户日志 显示所有用户日志 个人资料 显示管理员用户名、真实姓名 时间线 显示管理员创建时间 修改资料 修改姓名、手机号 小程序功能: 模块 介绍 登录 用户登录登出功能,登录会自动绑定微信账号,登出会解绑 注册 年级、用户名、密码 任务中心 管理员发布的年级任务,每个学生只能做一次 考试 题干支持文本、图片、数学公式、表格等,学生答题支持:文本 固定试卷 可重复练习、自行批改的试卷 时段试卷 在时间限制内,可重复练习、自行批改的试卷 考试记录 查看答卷记录和试卷信息 错题本 答错题目会自动进入错题本,显示题目基本信息 个人信息 显示学生个人资料 更新信息 修改个人资料、头像 个人动态 显示用户最近的个人动态 消息中心 用于接收管理员发送的消息

优秀的个人博客,低调大师

mysql8+mybatis-plus3.1自动生成带lombok和swagger和增删改查接口

mybatis-dsc-generator 还在为写swagger而烦恼吗?还在为忘记写注释而烦恼吗?还在为写简单的api接口而烦恼吗?mybatis-dsc-generator完美集成lombok,swagger的代码生成工具,让你不再为繁琐的注释和简单的接口实现而烦恼:entity集成,格式校验,swagger; dao自动加@ mapper,service自动注释和依赖; 控制器实现单表的增副改查,并实现swaggers的api文档。 源码地址 GitHub:https://github.com/flying-cattle/mybatis-dsc-generator 码云:https://gitee.com/flying-cattle/mybatis-dsc-generator MAVEN地址 2.1.0版本是未集成Mybatis-plus版本——源码分支master <dependency> <groupId>com.github.flying-cattle</groupId> <artifactId>mybatis-dsc-generator</artifactId> <version>2.1.0.RELEASE</version> </dependency> 3.0.0版本是集成了Mybatis-plus版本——源码分支mybatisPlus <dependency> <groupId>com.github.flying-cattle</groupId> <artifactId>mybatis-dsc-generator</artifactId> <version>3.0.0.RELEASE</version> </dependency> 数据表结构样式 CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `login_name` varchar(40) DEFAULT NULL COMMENT '登录名', `password` varchar(100) NOT NULL COMMENT '秘密', `nickname` varchar(50) NOT NULL COMMENT '昵称', `type` int(10) unsigned DEFAULT NULL COMMENT '类型', `state` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '状态:-1失败,0等待,1成功', `note` varchar(255) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `update_uid` bigint(20) DEFAULT '0' COMMENT '修改人用户ID', `login_ip` varchar(50) DEFAULT NULL COMMENT '登录IP地址', `login_addr` varchar(100) DEFAULT NULL COMMENT '登录地址', PRIMARY KEY (`id`), UNIQUE KEY `login_name` (`login_name`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 要求必须有表注释,要求必须有主键为id,所有字段必须有注释(便于生成java注释swagger等)。 生成的实体类 生成方法参考源码中的:https://gitee.com/flying-cattle/mybatis-dsc-generator/blob/master/src/main/java/com/github/mybatis/fl/test/TestMain.java 执行结果 实体类 /** * @filename:Order 2018年7月5日 * @project deal-center V1.0 * Copyright(c) 2018 BianP Co. Ltd. * All right reserved. */ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户实体类</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *---------------------------------------------------------------* * 2019年4月9日 BianPeng V1.0 initialize */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class User extends Model<User> { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(name = "id" , value = "用户ID") private Long id; @ApiModelProperty(name = "loginName" , value = "登录账户") private String loginName; @ApiModelProperty(name = "password" , value = "登录密码") private String password; @ApiModelProperty(name = "nickname" , value = "用户昵称") private String nickname; @ApiModelProperty(name = "type" , value = "用户类型") private Integer type; @ApiModelProperty(name = "state" , value = "用户状态") private Integer state; @ApiModelProperty(name = "note" , value = "备注") private String note; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @ApiModelProperty(name = "createTime" , value = "用户创建时间") private Date createTime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @ApiModelProperty(name = "updateTime" , value = "修改时间") private Date updateTime; @ApiModelProperty(name = "updateUid" , value = "修改人用户ID") private Long updateUid; @ApiModelProperty(name = "loginIp" , value = "登录IP") private String loginIp; @ApiModelProperty(name = "loginIp" , value = "登录地址") private String loginAddr; @Override protected Serializable pkVal() { return this.id; } } DAO import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import com.xin.usercenter.entity.User; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户数据访问层</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *---------------------------------------------------------------* * 2019年4月9日 BianPeng V1.0 initialize */ @Mapper public interface UserDao extends BaseMapper<User> { } 生成的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="com.xin.usercenter.dao.UserDao"> <resultMap id="BaseResultMap" type="com.xin.usercenter.entity.User"> <id column="id" property="id" /> <id column="login_name" property="loginName" /> <id column="password" property="password" /> <id column="nickname" property="nickname" /> <id column="type" property="type" /> <id column="state" property="state" /> <id column="note" property="note" /> <id column="create_time" property="createTime" /> <id column="update_time" property="updateTime" /> <id column="update_uid" property="updateUid" /> <id column="login_ip" property="loginIp" /> <id column="login_addr" property="loginAddr" /> </resultMap> <sql id="Base_Column_List"> id, login_name, password, nickname, type, state, note, create_time, update_time, update_uid, login_ip, login_addr </sql> </mapper> 生成的SERVICE import com.xin.usercenter.entity.User; import com.baomidou.mybatisplus.extension.service.IService; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户服务层</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *------------------------------------------------------------* * 2019年4月9日 BianPeng V1.0 initialize */ public interface UserService extends IService<User> { } 生成的SERVICE_IMPL import com.xin.usercenter.entity.User; import com.xin.usercenter.dao.UserDao; import com.xin.usercenter.service.UserService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户服务实现层</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *------------------------------------------------------------* * 2019年4月9日 BianPeng V1.0 initialize */ @Service public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserService { } 生成的CONTROLLER import com.item.util.JsonResult; import com.xin.usercenter.entity.User; import com.xin.usercenter.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户API接口层</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *---------------------------------------------------------------* * 2019年4月9日 BianPeng V1.0 initialize */ @Api(description = "用户",value="用户" ) @RestController @RequestMapping("/user") public class UserController { Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired public UserService userServiceImpl; /** * @explain 查询用户对象 <swagger GET请求> * @param 对象参数:id * @return user * @author BianPeng * @time 2019年4月9日 */ @GetMapping("/getUserById/{id}") @ApiOperation(value = "获取用户信息", notes = "获取用户信息[user],作者:BianPeng") @ApiImplicitParam(paramType="path", name = "id", value = "用户id", required = true, dataType = "Long") public JsonResult<User> getUserById(@PathVariable("id")Long id){ JsonResult<User> result=new JsonResult<User>(); try { User user=userServiceImpl.getById(id); if (user!=null) { result.setType("success"); result.setMessage("成功"); result.setData(user); } else { logger.error("获取用户失败ID:"+id); result.setType("fail"); result.setMessage("你获取的用户不存在"); } } catch (Exception e) { logger.error("获取用户执行异常:"+e.getMessage()); result=new JsonResult<User>(e); } return result; } /** * @explain 添加或者更新用户对象 * @param 对象参数:user * @return int * @author BianPeng * @time 2019年4月9日 */ @PostMapping("/insertSelective") @ApiOperation(value = "添加用户", notes = "添加用户[user],作者:BianPeng") public JsonResult<User> insertSelective(User user){ JsonResult<User> result=new JsonResult<User>(); try { boolean rg=userServiceImpl.saveOrUpdate(user); if (rg) { result.setType("success"); result.setMessage("成功"); result.setData(user); } else { logger.error("添加用户执行失败:"+user.toString()); result.setType("fail"); result.setMessage("执行失败,请稍后重试"); } } catch (Exception e) { logger.error("添加用户执行异常:"+e.getMessage()); result=new JsonResult<User>(e); } return result; } /** * @explain 删除用户对象 * @param 对象参数:id * @return int * @author BianPeng * @time 2019年4月9日 */ @PostMapping("/deleteByPrimaryKey") @ApiOperation(value = "删除用户", notes = "删除用户,作者:BianPeng") @ApiImplicitParam(paramType="query", name = "id", value = "用户id", required = true, dataType = "Long") public JsonResult<Object> deleteByPrimaryKey(Long id){ JsonResult<Object> result=new JsonResult<Object>(); try { boolean reg=userServiceImpl.removeById(id); if (reg) { result.setType("success"); result.setMessage("成功"); result.setData(id); } else { logger.error("删除用户失败ID:"+id); result.setType("fail"); result.setMessage("执行错误,请稍后重试"); } } catch (Exception e) { logger.error("删除用户执行异常:"+e.getMessage()); result=new JsonResult<Object>(e); } return result; } /** * @explain 分页条件查询用户 * @param 对象参数:AppPage<User> * @return PageInfo<User> * @author BianPeng * @time 2019年4月9日 */ @GetMapping("/getUserPages") @ApiOperation(value = "分页查询", notes = "分页查询返回对象[IPage<User>],作者:边鹏") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "pageNum", value = "当前页", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "pageSize", value = "页行数", required = true, dataType = "int") }) public JsonResult<Object> getUserPages(Integer pageNum,Integer pageSize){ JsonResult<Object> result=new JsonResult<Object>(); Page<User> page=new Page<User>(pageNum,pageSize); QueryWrapper<User> queryWrapper =new QueryWrapper<User>(); //分页数据 try { //List<User> list=userServiceImpl.list(queryWrapper); IPage<User> pageInfo=userServiceImpl.page(page, queryWrapper); result.setType("success"); result.setMessage("成功"); result.setData(pageInfo); } catch (Exception e) { logger.error("分页查询用户执行异常:"+e.getMessage()); result=new JsonResult<Object>(e); } return result; } } 生成完毕,控制器中的JsonResult import java.io.Serializable; import java.net.ConnectException; import java.sql.SQLException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Copyright: Copyright (c) 2019 * * <p>说明: 用户服务层</P> * @version: V1.0 * @author: BianPeng * * Modification History: * Date Author Version Description *---------------------------------------------------------* * 2019/4/9 flying-cattle V1.0 initialize */ public class JsonResult<T> implements Serializable{ Logger logger = LoggerFactory.getLogger(this.getClass()); private static final long serialVersionUID = 1071681926787951549L; /** * <p>返回状态</p> */ private Boolean isTrue=true; /** *<p> 状态码</p> */ private String code; /** * <p>业务码</p> */ private String type; /** *<p> 状态说明</p> */ private String message; /** * <p>返回数据</p> */ private T data; public Boolean getTrue() { return isTrue; } public void setTrue(Boolean aTrue) { isTrue = aTrue; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } public String getType() { return type; } public void setType(String type) { this.type = type; } /** * <p>返回成功</p> * @param type 业务码 * @param message 错误说明 * @param data 数据 */ public JsonResult(String type, String message, T data) { this.isTrue=true; this.code ="0000"; this.type=type; this.message = message; this.data=data; } public JsonResult() { this.isTrue=true; this.code ="0000"; } public JsonResult(Throwable throwable) { logger.error(throwable+"tt"); this.isTrue=false; if(throwable instanceof NullPointerException){ this.code= "1001"; this.message="空指针:"+throwable; }else if(throwable instanceof ClassCastException ){ this.code= "1002"; this.message="类型强制转换异常:"+throwable; }else if(throwable instanceof ConnectException){ this.code= "1003"; this.message="链接失败:"+throwable; }else if(throwable instanceof IllegalArgumentException ){ this.code= "1004"; this.message="传递非法参数异常:"+throwable; }else if(throwable instanceof NumberFormatException){ this.code= "1005"; this.message="数字格式异常:"+throwable; }else if(throwable instanceof IndexOutOfBoundsException){ this.code= "1006"; this.message="下标越界异常:"+throwable; }else if(throwable instanceof SecurityException){ this.code= "1007"; this.message="安全异常:"+throwable; }else if(throwable instanceof SQLException){ this.code= "1008"; this.message="数据库异常:"+throwable; }else if(throwable instanceof ArithmeticException){ this.code= "1009"; this.message="算术运算异常:"+throwable; }else if(throwable instanceof RuntimeException){ this.code= "1010"; this.message="运行时异常:"+throwable; }else if(throwable instanceof Exception){ logger.error("未知异常:"+throwable); this.code= "9999"; this.message="未知异常"+throwable; } } } 如果你生成的分页的方法不能分页:根据官方提升,记得在启动类中加入 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册