ruoyi vue功能介绍
简介
RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务 。
内置功能
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:对系统的缓存信息查询,命令统计等。
- 在线构建器:拖动表单元素生成相应的Vue代码。
- 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
完善后端单表user 的CURD 功能代码和测试
表单创建可见标题:SpringBoot 结合MyBatis读取MySQL 数据试例-CSDN博客
Controller:
package com.ruoyi.web.controller.system;
import com.ruoyi.system.domain.User;
import com.ruoyi.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class HelloController {
@Autowired
private UserService userService;
@GetMapping("/hello")
public List<User> hello()
{
return userService.selectAllUser();
}
//新增
@PostMapping("/hello/insert") //Post
public String helloPost(String name ,int age,int sex)
{
userService.insertUser(name,age,sex);
return "add name: "+name + ", age= "+age + ",sex=" + sex;
}
@PutMapping("/hello/update") //Put
public String helloPut(int id,String name,int age,int sex)
{
userService.updateUsers(id,name,age,sex);
return "update name:"+ name + ", age=" + age + ",sex=" + sex;
}
@DeleteMapping("/hello/{name}") //Delete
public String helloDel(@PathVariable String name)
{
userService.deleteName(name);
return "delete name: "+name;
}
Domain:
package com.ruoyi.system.domain;
public class User {
public int id;
private String name;
private int age;
public int sex;
public String createTime;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
}
Mapper:
这里创建了一个接口用来引入类
上面为接口下面为类
package com.ruoyi.system.mapper;
import com.ruoyi.system.domain.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper {
public List<User> selectAllUser();
//新增
public void deleteName(String name);
public void updateUsers(@Param("id") int id, @Param("name") String name, @Param("age") int age, @Param("sex") int sex);
public void insertUser(@Param("name") String name,@Param("age")int age,@Param("sex") int sex);
}
package com.ruoyi.system.service;
import com.ruoyi.system.domain.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserService {
public List<User> selectAllUser();
//新增
public void deleteName(String name);
public void updateUsers(int id,String name,int age,int sex);
public void insertUser(String name,int age,int sex);
}
UserMapper.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.ruoyi.system.mapper.UserMapper">
<resultMap id="UserResult" type="User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<result property="createTime" column="create_time" />
</resultMap>
<select id="selectAllUser" resultMap="UserResult">
select * from user
</select>
<!-- 新增-->
<delete id="deleteName">
delete from user
where name = #{name}
</delete>
<update id="updateUsers">
<!-- update user-->
<!-- <trim prefix="SET" suffixOverrides=",">-->
<!-- <if test="name != null">name = #{name},</if>-->
<!-- <if test="sex != null">sex = #{sex},</if>-->
<!-- <if test="age != null">age = #{age},</if>-->
<!-- </trim>-->
<!-- where Id = #{id}-->
update user
<set>
<if test="name != null">name = #{name},</if>
<if test="sex != null">sex = #{sex},</if>
<if test="age != null">age = #{age},</if>
</set>
where id = #{id}
</update>
<insert id="insertUser">
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null">name,</if>
<if test="sex != null">sex,</if>
<if test="age != null">age,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="name != null">#{name},</if>
<if test="sex != null">#{sex},</if>
<if test="age != null">#{age},</if>
</trim>
</insert>
</mapper>
SecurityConfig.java:
将要使用的接口屏蔽安全拦截
.antMatchers("system/user/*").anonymous()
.antMatchers("/hello").anonymous()
.antMatchers("/hello/insert").anonymous()
.antMatchers("/hello/update").anonymous()
.antMatchers("/hello/{name}").anonymous()
Postman 测试接口:
get
put(修改)
/hello/update
delete(删除)
/hello/{name}
post(添加)
/hello/insert
get显示添加成功
参考链接Ruoyi Vue 如何添加单表Read 代码-CSDN博客
总结
网上对mapper.xml作用的理解
一个完整的 Mapper 映射文件,需要有约束头 xml 与 !DOCTYPE ,其次才是 mapper 根元素,最后再是顶级元素,而其中,namespace 属性作为 mapper 的唯一标识,试回忆:
- 上学时,6年级一班23号,能代表唯一的你。
- 编写 Java 类时,包名 + 类名,能代表唯一的类。
- 而如今,我们在 Mybatis 中写的每一段 SQL 语句,同样有唯一的代表方式,那就是「 命名空间标识 + 语句id 」,无论是为了区分业务也好,还是为了拆分服务也好,反正 Mybatis 让每一个 mapper.xml 配备一个唯一命名空间标识。