当前位置:实例文章 » 其他实例» [文章]mybatis 数据库查询有数据,代码结果返回null

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的问题。

相关标签:mybatis
其他信息

其他资源

Top