4条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
看起来你正在尝试使用Spring Boot、MyBatis以及注解驱动的方式来配置一个简单的用户服务。然而,你在启动应用时遇到了错误,提示找不到
UserMapper
的bean。这个问题通常是由于MyBatis的相关配置没有正确设置导致的。首先,确保你已经在Spring Boot项目的pom.xml文件中添加了MyBatis的相关依赖。如果你还没有添加,可以加入以下依赖:
<dependencies> <!-- ... --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!-- If you are using MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- ... --> </dependencies>
接下来,你需要在src/main/resources目录下创建一个名为
mybatis-config.xml
的配置文件,并且在这个文件中启用自动扫描mapper接口:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <mappers> <mapper resource="org/example/myfirstproject/mapper/UserMapper.xml"/> </mappers> </configuration>
然后,在
UserMapper.java
中,你需要包含MyBatis的@Mapper
注解,并且创建对应的XML映射文件(例如:UserMapper.xml
),将SQL语句放在XML文件中:package org.example.myfirstproject.mapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.session.SqlSession; import org.example.myfirstproject.model.User; @Mapper public interface UserMapper { @Insert("INSERT INTO myfirstproject.userinfo(username, password) VALUES (#{userName}, #{password})") void insert(User user); }
创建一个对应的
UserMapper.xml
文件:<mapper namespace="org.example.myfirstproject.mapper.UserMapper"> <insert id="insert" parameterType="com.example.myfirstproject.model.User"> INSERT INTO myfirstproject.userinfo(username, password) VALUES (#{userName}, #{password}) </insert> </mapper>
现在回到
UserServiceImpl.java
,删除@Autowired private UserMapper userMapper;
这一行,因为Spring Boot会根据@Mapper
注解自动扫描并注入UserMapper
到你的服务类中。确保你的register()
方法接收的是User
对象,而不是用户名和密码字符串:package org.example.myfirstproject.service.impl; import org.example.myfirstproject.model.User; import org.example.myfirstproject.mapper.UserMapper; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { // No need for @Autowired here as Spring Boot will automatically inject it private final UserMapper userMapper; public UserServiceImpl(UserMapper userMapper) { this.userMapper = userMapper; } @Override public void register(User user){ userMapper.insert(user); } }
确保你的
User.java
类有一个构造函数,以便Spring可以实例化它:package org.example.myfirstproject.model; public class User { private String userName; private String password; public User(String userName, String password) { this.userName = userName; this.password = password; } // getters and setters... }
现在,你的应用应该能正常启动并且不会抛出找不到
UserMapper
的异常了。记得检查数据库连接是否配置正确,这样才能成功插入数据。如果还有其他问题,可能需要检查Spring Boot的其他配置,例如DataSource、JdbcTemplate或Druid等。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录