mybatis-plus初体验,解决报错Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

解决报错Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

推荐这位大佬的博客:

https://www.cnblogs.com/muphy/p/18653627

项目结构

image

MyBatis-Plus配置类

MyBatisPlusConfig

package com.example.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * MyBatis-Plus配置类
 * 配置分页插件等功能
 */
@Configuration
public class MyBatisPlusConfig {

    /**
     * 添加分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加MySQL的分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

用户Controller类

UserController

package com.example.controller;

import com.example.entity.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户Controller类
 * 处理HTTP请求,实现CRUD操作的RESTful接口
 */
@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 获取所有用户列表
     * GET /api/users
     */
    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        List<User> users = userService.list();
        return ResponseEntity.ok(users);
    }

    /**
     * 根据ID获取单个用户
     * GET /api/users/{id}
     */
    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.getById(id);
        if (user == null) {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.ok(user);
    }

    /**
     * 创建新用户
     * POST /api/users
     */
    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        // 设置创建和更新时间
        user.setCreateTime(LocalDateTime.now());
        user.setUpdateTime(LocalDateTime.now());
        boolean saved = userService.save(user);
        if (saved) {
            return ResponseEntity.ok(user);
        }
        return ResponseEntity.status(500).build();
    }

    /**
     * 更新用户信息
     * PUT /api/users/{id}
     */
    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
        // 检查用户是否存在
        if (userService.getById(id) == null) {
            return ResponseEntity.notFound().build();
        }
        // 设置ID和更新时间
        user.setId(id);
        user.setUpdateTime(LocalDateTime.now());
        boolean updated = userService.updateById(user);
        if (updated) {
            return ResponseEntity.ok(user);
        }
        return ResponseEntity.status(500).build();
    }

    /**
     * 删除用户
     * DELETE /api/users/{id}
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        // 检查用户是否存在
        if (userService.getById(id) == null) {
            return ResponseEntity.notFound().build();
        }
        boolean deleted = userService.removeById(id);
        if (deleted) {
            return ResponseEntity.noContent().build();
        }
        return ResponseEntity.status(500).build();
    }
}

用户实体类

User

package com.example.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 用户实体类
 * 对应数据库中的user表
 */
@Data
@TableName("user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID,自增
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}

用户Mapper接口

UserMapper

package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.User;

/**
 * 用户Mapper接口
 * 继承自MyBatis-Plus的BaseMapper,提供基础的CRUD操作
 */
public interface UserMapper extends BaseMapper<User> {
    // 可以在这里添加自定义的SQL方法
}

用户Service实现类

UserServiceImpl

package com.example.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
import org.springframework.stereotype.Service;

/**
 * 用户Service实现类
 * 继承自MyBatis-Plus的ServiceImpl,实现了UserService接口
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    // 可以在这里实现自定义的业务方法
}

用户Service接口

UserService

package com.example.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.User;

/**
 * 用户Service接口
 * 继承自MyBatis-Plus的IService,提供更多的业务方法
 */
public interface UserService extends IService<User> {
    // 可以在这里添加自定义的业务方法
}

posted @ 2025-09-17 16:37  雨花阁  阅读(93)  评论(0)    收藏  举报