mybatis 数据库查询有数据,代码结果返回null
发布人:shili8
发布时间:2025-01-04 12:19
阅读次数:0
**MyBatis数据库查询结果返回null**
在实际开发中,我们经常会遇到这样的问题:使用MyBatis进行数据库查询时,虽然数据库中存在相应的数据,但是程序运行后,却返回了空值(即null)。这种情况下,我们需要逐步分析和解决问题。
**一、环境准备**
首先,我们需要确保我们的开发环境已经配置好。包括Java版本、MyBatis版本以及相关依赖包的下载和导入。
* Java版本:建议使用最新版的Java8或以上。
* MyBatis版本:建议使用最新版的MyBatis3.x。
* 相关依赖包:需要导入mybatis-spring、spring-jdbc等相关包。
**二、配置文件**
接下来,我们需要检查我们的配置文件是否正确。包括Mapper.xml和application.properties。
### Mapper.xml
xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//iBatis.apache.org//DTD Config3.0//EN" " /><mapper namespace="com.example.mapper.UserMapper"> <!-- 查询用户信息 --> <select id="getUserInfo" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
### application.properties
propertiesspring.datasource.url=jdbc:mysql://localhost:3306/mybatis_testspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=com.example.entity
**三、Mapper接口**
然后,我们需要检查我们的Mapper接口是否正确。包括接口定义和方法实现。
### UserMapper.java
javapackage com.example.mapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; import java.util.List; /** * @author [Your Name] */ @Mapper@Repositorypublic interface UserMapper { /** * 根据id获取用户信息 * * @param id 用户id * @return 用户信息 */ public User getUserInfo(Long id); }
### User.java
javapackage com.example.entity; import java.util.Date; /** * @author [Your Name] */ public class User { private Long id; private String name; private Date birthday; // getter and setter methods... }
**四、Service层**
接着,我们需要检查我们的Service层是否正确。包括业务逻辑的实现和Mapper接口的调用。
### UserService.java
javapackage com.example.service; import com.example.entity.User; import com.example.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author [Your Name] */ @Servicepublic class UserService { private final UserMapper userMapper; @Autowired public UserService(UserMapper userMapper) { this.userMapper = userMapper; } /** * 根据id获取用户信息 * * @param id 用户id * @return 用户信息 */ public User getUserInfo(Long id) { return userMapper.getUserInfo(id); } }
**五、Controller层**
最后,我们需要检查我们的Controller层是否正确。包括请求的处理和Service层的调用。
### UserController.java
javapackage com.example.controller; import com.example.entity.User; import com.example.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; /** * @author [Your Name] */ @RestControllerpublic class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } /** * 根据id获取用户信息 * * @param id 用户id * @return 用户信息 */ @GetMapping("/user/{id}") public User getUserInfo(@PathVariable Long id) { return userService.getUserInfo(id); } }
**六、测试**
最后,我们需要进行测试。包括单元测试和集成测试。
### UserMapperTest.java
javapackage com.example.mapper; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; /** * @author [Your Name] */ public class UserMapperTest { private final UserMapper userMapper; @Autowired public UserMapperTest(UserMapper userMapper) { this.userMapper = userMapper; } @Test public void testGetUserInfo() { Long id =1L; User userInfo = userMapper.getUserInfo(id); System.out.println(userInfo.getName()); } }
### UserControllerTest.java
javapackage com.example.controller; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author [Your Name] */ public class UserControllerTest { private final UserController userController; @Autowired public UserControllerTest(UserController userController) { this.userController = userController; } @Test public void testGetUserInfo() { Long id =1L; User userInfo = userController.getUserInfo(id); System.out.println(userInfo.getName()); } }
通过以上的步骤和代码示例,我们可以解决MyBatis数据库查询结果返回null的问题。