目录
一.创建或导入user表
在RuoYi-Vue数据库导入user.sql文件,或者自己新建user文件
二.添加代码
1.User
User类用于表示用户信息:
字段:
public int id;:这是一个公开的字段,表示用户的ID,用作数据库的主键。
private String name;:私有字段,表示用户的姓名。私有字段的使用是为了封装和保护数据,只能通过getter和setter方法访问。
private int age;:私有字段,表示用户的年龄,同样只能通过getter和setter方法访问。
public String create_time;:公开字段,表示用户的创建时间。
方法:
getName(), getAge(), getId(), getcreate_time():这些公共的getter方法允许外部代码获取私有字段的值。
setName(String name), setAge(int age), setId(int id), setcreate_time(String create_time):这些公共的setter方法允许外部代码设置私有字段的值。
toString方法:@Override public String toString() 方法重写了Object类的toString方法,提供了一种字符串表示形式,方便打印和调试User对象。
package com.ruoyi.system.domain;
public class User {
public int id;
private String name;
private int age;
public String create_time;
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 String getcreate_time() {
return create_time;
}
public void setcreate_time(String create_time) {
this.create_time = create_time;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name=" + name +
", age=" + age +
", create_time=" + create_time +
'}';
}
}
2.UserMapper
这个UserMapper接口是Java中使用MyBatis框架进行数据库操作的一部分,这个接口定义了基本的CRUD(创建、读取、更新、删除)操作:
注解:
@Mapper:这是MyBatis的注解,用于标识这个接口是一个MyBatis的Mapper接口,MyBatis会为这个接口生成一个代理实现类,用于执行数据库操作。
@Repository:这是Spring框架的注解,用于标识这个接口是一个数据访问对象(Repository),通常用于持久化操作。
方法:
public List<User> selectAllUser();:这个方法用于查询数据库中的所有用户信息,并返回一个包含User对象的列表。
int insertUser(User user);:这个方法用于将一个User对象插入到数据库中,并返回插入操作影响的行数。
int updateUser(User user);:这个方法用于更新数据库中的一个User对象,并返回更新操作影响的行数。
int deleteUser(@Param("id") Integer id);:这个方法用于根据用户ID删除数据库中的一个User对象,并返回删除操作影响的行数。@Param("id")注解用于指定方法参数作为MyBatis查询语句中的参数名。
package com.ruoyi.system.mapper;
import com.ruoyi.system.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserMapper {
public List<User> selectAllUser();
int insertUser(User user);
int updateUser(User user);
int deleteUser(@Param("id") Integer id);
}
3.UserService
UserService类是Java中使用Spring框架和MyBatis框架进行业务逻辑处理的一部分:
依赖注入:
@Autowired:这是Spring框架的注解,用于自动注入Spring容器中的Bean。在这里,它用于注入UserMapper接口的实现。
private UserMapper userMapper;:这是一个私有成员变量,用于存储注入的UserMapper实例。
方法:
public List<User> selectAllUser():这个方法调用userMapper的selectAllUser方法,用于获取数据库中的所有用户信息,并返回一个包含User对象的列表。
public int delete(@Param("id") int id):这个方法调用userMapper的deleteUser方法,用于根据用户ID删除数据库中的一个User对象,并返回删除操作影响的行数。
public int update(User user):这个方法调用userMapper的updateUser方法,用于更新数据库中的一个User对象,并返回更新操作影响的行数。
public int save(User user):这个方法调用userMapper的insertUser方法,用于将一个User对象插入到数据库中,并返回插入操作影响的行数。
package com.ruoyi.system.service.impl;
import com.ruoyi.system.domain.User;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectAllUser(){
return userMapper.selectAllUser();
}
public int delete(@Param("id") int id){
return userMapper.deleteUser(id);
}
public int update(User user){
return userMapper.updateUser(user);
}
public int save(User user){
return userMapper.insertUser(user);
}
}
4.HelloController
HelloController类是一个Spring Boot应用中的控制器类,用于处理HTTP请求并与服务层交互:
注解:
@RestController:这是Spring框架的注解,用于标识这个类是一个REST控制器,它会自动处理HTTP请求和响应。
@Autowired:这是Spring框架的注解,用于自动注入Spring容器中的Bean。在这里,它用于注入UserService类的实例。
依赖注入:
private UserService userService;:这是一个私有成员变量,用于存储注入的UserService实例。
请求处理方法:
@GetMapping("/get"):这是一个GET请求的处理方法,当访问/get路径时,会调用userService.selectAllUser()方法获取所有用户信息,并返回这些信息。
@PostMapping("/insert"):这是一个POST请求的处理方法,当向/insert路径发送POST请求时,会调用userService.save(user)方法保存用户信息,并返回插入操作影响的行数。
@PutMapping("/update"):这是一个PUT请求的处理方法,当向/update路径发送PUT请求时,会调用userService.update(user)方法更新用户信息,并返回更新操作影响的行数。
@DeleteMapping("/delete/{id}"):这是一个DELETE请求的处理方法,当向/delete/{id}路径发送DELETE请求时,会调用userService.delete(id)方法删除指定ID的用户,并返回删除操作影响的行数。
请求体和路径变量:
@RequestBody:这个注解用于将客户端发送的HTTP请求体(JSON格式)映射到Java对象。
@PathVariable:这个注解用于将URL中的路径变量(如{id})映射到控制器方法的参数。
package com.ruoyi.web.controller.system;
import com.ruoyi.system.domain.User;
import com.ruoyi.system.service.impl.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
public class HelloController {
@Autowired
private UserService userService;
@GetMapping("/get")
public List<User> hello(){
return userService.selectAllUser();
}
@PostMapping("/insert")
public Integer save(@RequestBody User user){
return userService.save(user);
}
@PutMapping("/update")
public Integer update(@RequestBody User user){
return userService.update(user);
}
@DeleteMapping("/delete/{id}")
public Integer delete(@PathVariable Integer id){
return userService.delete(id);
}
}
5.UserMapper.mxl编辑
<?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="create_time" column="create_time" />
</resultMap>
<!-- 查询所有用户信息-->
<select id="selectAllUser" resultMap="UserResult">
select * from user
</select>
<!-- 插入用户信息-->
<insert id="insertUser" parameterType="User">
INSERT into user(name,age,create_time) VALUES (#{name},#{age},#{create_time})
</insert>
<!-- 根据id删除信息-->
<delete id="deleteUser" parameterType="int">
DELETE from user where id=#{id}
</delete>
<update id="updateUser" parameterType="User">
UPDATE user
<set>
<if test="name !=null">
name=#{name},
</if>
<if test="age !=null">
age=#{age},
</if>
<if test="create_time !=null">
create_time=#{create_time}
</if>
</set>
<where>
id=#{id}
</where>
</update>
</mapper>
三.屏蔽新加接口安全防护策略编辑
打开SecurityConfig文件
在.antiMatchers的()中添加等会测试用的网址,否则测试时会被屏蔽
网址按照自己在HelloController中的定义填入
四.PostMan测试
Get查询
Post添加
返回1时说明添加成功,此时重新Get可以看到成功添加了一个id为6的人
Put修改
返回1说明修改成功,重新get可以看到id为6的人的信息被修改了
Delete删除
返回1说明删除成功,此时重新get可以看到id为2的lisi被删除了。
五.实验中遇到的问题及解决方案
1.“error”: “Not Found”
在HelloController中添加@ResrController即可解决
2.Required request body is missing: …
3. Invalid bound statement (not found): …
检查UserMapper.xml和UserMapper.java中红框标记的代码是否都能一一对应,如果有不对应的只需修改成对应的即可解决报错
4.认证失败,无法访问系统资源
1.检查是否是因为网址输入错误导致的
2.检查SecurityConfig中添加进去的网址和HelloController中的网址是否一一对应